0

我正在尝试使用托管在 IIS 7 中的 AuthenticationService WCF 对从 windows phone 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 URL

svcutil.exe https://mcname.domain.local:700/AuthenticationService.svc?wsdl 

编辑 2尝试禁用防病毒和防火墙,但仍然没有运气。

4

1 回答 1

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 的帮助。

于 2012-10-25T23:21:27.927 回答