没有端点监听WCF AuthenticationService

时间:2012-10-25 13:29:14

标签: wcf windows-phone-7 ssl wcf-ria-services wcf-security

我正在尝试使用 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 尝试禁用防病毒和防火墙,但仍然没有运气。

1 个答案:

答案 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

  • 主机名必须由http代理通过DNS,WINS解析, 主持文件等。
  • 必须使用与主机匹配的名称来识别SSL证书 名称。
  • 必须使用http
    安装受信任的根证书 代理人,即在电话上。

将证书安装到WP7仿真器手机上是最棘手的部分。如前所述,P7B文件托管在IIS上,URL通过模拟器浏览器访问,帮助我在手机上安装证书(抱歉!我忘记了参考链接)。

安装完成后,端点问题消失,并开始工作。由于这不是一个永久的解决方案(因为每次关闭仿真器都需要重新安装CERT),我正在研究http://wp7certinstaller.codeplex.com/代码,以便在IIS中托管以进行测试时使其正常工作。

感谢@Rajesh的帮助。