使用Windows Phone 7的WCF:通过传输发送用户名

时间:2011-01-13 15:03:20

标签: wcf windows-phone-7 wcf-security

我已经使用自定义绑定创建了支持Silverlight的WCF服务,以根据指南传输binaryMessages。 我可以通过添加httpsTransport条目并在我的本地IIS实例上安装Verisign CA,从电话模拟器通过https调用此服务。到目前为止一切都很好。

我将绑定的安全性条目和服务凭据添加到行为中以使用自定义类。当通过客户端代理提交有效的用户名/密码对时,此服务和自定义类可以在单元测试中正常工作。

当我从WP7模拟器中执行相同操作时,我收到“MessageSecurityException”。

我的服务配置如下。有关如何调试的任何想法或指示?感谢...

<system.serviceModel>
    <bindings>
      <customBinding>
        <binding name="SimpleService.Simple.customBinding0">
          <security authenticationMode="UserNameOverTransport"/>
          <binaryMessageEncoding />
          <httpsTransport/>
        </binding>
      </customBinding>
    </bindings>
    <services>
      <service name="SimpleService.Simple">
        <endpoint address="" binding="customBinding" bindingConfiguration="SimpleService.Simple.customBinding0"
          contract="SimpleService.Simple" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode="Custom"  customUserNamePasswordValidatorType="SimpleService.MyValidator,SimpleService"/>
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

再次感谢..

1 个答案:

答案 0 :(得分:1)

感谢我的同事Yossi Dahan,我能够使用Visual Studio中的WCF服务配置编辑器将跟踪添加到我的Web服务配置中,然后使用Microsoft服务跟踪查看器来分析日志。 / p>

这表明请求已通过服务器,但自定义验证程序正在抛出异常。

通过从VS内部附加到IIS,我能够调试自定义验证器以发现(令人尴尬)我的WP7测试传递了无效的用户凭据 - 所以一切都正常工作!

获得的经验 - 在使用新技术时获得正确的跟踪/工具。