首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

customUserNamePasswordValidatorType 应该怎么设定

2012-12-17 
customUserNamePasswordValidatorType 应该如何设定本帖最后由 nethawkc 于 2012-01-01 22:33:12 编辑最近

customUserNamePasswordValidatorType 应该如何设定
本帖最后由 nethawkc 于 2012-01-01 22:33:12 编辑 最近在学习 WCF 用户密码验证, 但是在设定customUserNamePasswordValidatorType 时却一直有问题.
我新增一个WCF的新网站, 不做任何修改﹐只是在Service.cs 加上一段继承UserNamePasswordValidator 的class


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.IdentityModel;
using System.IdentityModel.Tokens;
using System.IdentityModel.Selectors;

public class Service : IService {
    public string GetData(int value) {
        return string.Format("You entered: {0}", value);
    }

    public CompositeType GetDataUsingDataContract(CompositeType composite) {
        if (composite == null) {
            throw new ArgumentNullException("composite");
        }
        if (composite.BoolValue) {
            composite.StringValue += "Suffix";
        }
        return composite;
    }

    public class MyUserValidator : UserNamePasswordValidator {
        public override void Validate(string userName, string password) {
            if (null == userName || null == password) {
                throw new ArgumentNullException();
            }

            if (!(userName == "test1" && password == "1tset") && !(userName == "test2" && password == "2tset")) {
                throw new FaultException("Unknown Username or Incorrect Password");
            }
        }
    }
}


然后修改web.config, 但在customUserNamePasswordValidatorType这里搞不定

    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
          <serviceCredentials>
            <clientCertificate>
              <authentication certificateValidationMode="None" />


            </clientCertificate>
            <serviceCertificate findValue="HTTPS-Server" x509FindType="FindBySubjectName" />
            <userNameAuthentication userNamePasswordValidationMode="Custom"
              customUserNamePasswordValidatorType="Service.MyUserValidator,Service" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>



customUserNamePasswordValidatorType这个的格式是"命名空间.方法, 命名空间"﹐但我上述的设定后以IE执行http://localhost/WCFService/Service.svc﹐就出现 "无法加载档案或组件 'Service' 或其相依性的其中之一。 系统找不到指定的档案。"

我试着自行在程序上加入namespace

namespace WCFWebHost {
    public class Service : IService {
          ...........
          ...........
    }
}


将 customUserNamePasswordValidatorType="WCFWebHost.Service.MyUserValidator , WCFWebHost" 设定成这样﹐但仍然是得到同样的错误讯息"无法加载档案或组件 'Service' 或其相依性的其中之一.  系统找不到指定的档案。"

请问这个到底该如何设定呢?

[解决办法]
要创建一个 iis application
[解决办法]
我已知问题所在了,用IIS当WCF宿主,必须将继承UserNamePasswordValidator 的class写在另外新增的一个项目檔, 之后再reference这个项目檔产生的dll…
网络上的范例和MSDN都没提到这一点.
[解决办法]
肯定不用这样
[解决办法]
zhanghb0001 如果不用的话,能否给我一个范例 ? 我也很希望不用
我是在vs2008/vs2010 之下 档案-> 新增 -> 网站 -> WCF 服务, 所建置的项目

[解决办法]
你可以参考下这篇文章哦:http://www.cnblogs.com/viter/archive/2009/07/04/wcf_usernamepassword.html
祝你好运,喵~~
[解决办法]
Devmiao 那篇我看过, 跟网络上其它的还有MSDN说的都类似, 但都没说如果是用IIS 当宿主的话那个class 要另外建一个项目檔再参考.
如果像我直接使用WCF网站直接加一个class在设置customUserNamePasswordValidatorType 会一直有问题.

[解决办法]
你的assembly名字是Service吗? 你可以试换个不那么敏感的
[解决办法]
关注,同样的问题

热点排行