在客户端尝试使用WCF时验证消息的安全性时发生错误

时间:2012-03-28 07:08:43

标签: wcf

我正在尝试使用此链接使用不带SSL的wcf服务身份验证: http://webservices20.blogspot.in/2008/11/introducing-wcf-clearusernamebinding.html

在我发布服务之前,每件事情都没问题。但是当我尝试使用asp.net webClient服务时,它会抛出

验证邮件异常的安全性时发生错误

服务器堆栈跟踪:

  at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

我的网络配置文件是:

<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<extensions>
<bindingExtensions>
<add name="clearUsernameBinding"   type="WebServices20.BindingExtenions.ClearUsernameCollectionElement, ClearUsernameBinding" />
  </bindingExtensions>
</extensions>
<bindings>
  <clearUsernameBinding>
    <binding name="myClearUsernameBinding" messageVersion="Soap12">
    </binding>
  </clearUsernameBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="SampleServiceBehaviour">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
      <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="QService.MyUserNameValidator,QService" />
      </serviceCredentials>
    </behavior>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="QService.Service1" behaviorConfiguration="SampleServiceBehaviour">
    <endpoint binding="clearUsernameBinding" bindingConfiguration="myClearUsernameBinding" contract="QService.IService1" />
  </service>
</services>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

 

我的客户代码是:

  ServiceReference1.ServiceClient obj = new ServiceReference1.ServiceClient();
        obj.ClientCredentials.UserName.UserName = "user";
        obj.ClientCredentials.UserName.Password = "pass";
        Response.Write(obj.GetData(45));

提前致谢

0 个答案:

没有答案