我正在尝试使用 windows phone 7 对我的用户进行身份验证进行身份验证 AuthenticationService WCF ,它位于 IIS 7 。
中我在没有SSL的情况下尝试过它并且工作正常。但我想把它转换成 HTTPS。
我得到的错误是当我从WP7模拟器中调用此WCF时 是:
"EndpointNotFoundException"
但是我的web.config有以下详细信息:
<system.serviceModel>
<services>
<service name="System.Web.ApplicationServices.AuthenticationService"
behaviorConfiguration="AuthenticationServiceTypeBehaviors">
<endpoint contract="System.Web.ApplicationServices.AuthenticationService"
binding="basicHttpBinding"
bindingConfiguration="userHttps" address="https://localhost:700/AuthenticationService.svc"
bindingNamespace="http://asp.net/ApplicationServices/v200"/>
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="userHttps">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="AuthenticationServiceTypeBehaviors" >
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment
aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
使用:AspNetSqlMembershipProvider,我正在避免这些细节来说明问题。
在我的IIS 7中,我创建了一个应用程序池并关联了一个自签名的 证书到托管的WCF和SSL设置选项“要求SSL - 选中“和”忽略客户端证书 - 已选中“
我可以浏览https://localhost:700/AuthenticationService.svc.
我能够在手机中添加此服务参考,但是当我打电话给我时 登录方法显示错误。
我已经指定了终点地址,即便如此,它也显示错误。
任何人都可以解释我如何调试这个以获取更多细节或任何指针 解决“通过SSL使用身份验证服务WCF”
编辑1 我尝试访问时尝试使用IP地址和svc网址 通过浏览器服务
svcutil.exe https://mcname.domain.local:700/AuthenticationService.svc?wsdl
编辑2 尝试禁用防病毒和防火墙,但仍然没有运气。
答案 0 :(得分:0)
根据@ Rajesh的评论,我在手机中安装了证书并开始工作。
我尝试了导出.CER,.PFX和.P7B格式的所有选项,只有P7B格式适合我才能将其安装到手机中。
用于启用带有SSL的AuthenticationService WCF的web.config文件部分是
<services>
<service behaviorConfiguration="AppServiceBehaviors" name="System.Web.ApplicationServices.AuthenticationService">
<endpoint binding="basicHttpBinding" bindingConfiguration="defaultBasicHttpBinding"
bindingNamespace="http://asp.net/ApplicationServices/v200" contract="System.Web.ApplicationServices.AuthenticationService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="AppServiceBehaviors">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.web.extensions>
<scripting>
<webServices>
<authenticationService enabled="true" requireSSL="true"/>
遵循以下步骤:http://blogs.msdn.com/b/davidhardin/archive/2010/12/30/wp7-and-self-signed-ssl-certificates.aspx
将证书安装到WP7仿真器手机上是最棘手的部分。如前所述,P7B文件托管在IIS上,URL通过模拟器浏览器访问,帮助我在手机上安装证书(抱歉!我忘记了参考链接)。
安装完成后,端点问题消失,并开始工作。由于这不是一个永久的解决方案(因为每次关闭仿真器都需要重新安装CERT),我正在研究http://wp7certinstaller.codeplex.com/代码,以便在IIS中托管以进行测试时使其正常工作。
感谢@Rajesh的帮助。