2014-09-04 174 views
0

由于在Firefox中的“混合内容阻塞”问题,我必须将在控制台应用程序上运行的wcf服务更改为https。更改wcf服务从Http到https使它无法访问

这是配置:

<services> 
    <service name="ServiceHost.Services.BiometricCaptureService" behaviorConfiguration="Default"> 
    <endpoint address="rest" behaviorConfiguration="CorsBehavior" binding="webHttpBinding" bindingConfiguration="httpsBinding" contract="ServiceHost.IServices.IBiometricCaptureService"/> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="https://localhost:8502/biometrics/biometricscaptureservice.svc"/> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="CorsBehavior"> 
     <webHttp/> 
     <crossOriginResourceSharingBehavior/> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="Default"> 
     <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<extensions> 
    <behaviorExtensions> 
    <add name="crossOriginResourceSharingBehavior" type="ServiceHost.Utility.CORSBehaviorExtensionElement, ServiceHost, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> 
    </behaviorExtensions> 
</extensions> 
<bindings> 
    <webHttpBinding> 
    <binding name="httpsBinding" maxReceivedMessageSize="2147483647"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
     </security> 
     <readerQuotas maxStringContentLength="2147483647" /> 
    </binding> 
    </webHttpBinding> 
</bindings> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 

启动服务不会抛出这个配置任何错误,但我不能打在端点上了。

我能得到的唯一错误是:“无法从传输连接读取数据:现有连接被远程主机强制关闭。”

任何人都可以看到这个问题吗?

+1

尝试添加'System.Net.ServicePointManager.ServerCertificateValidationCallback = ((发件人,证书链,sslPolicyErrors)=> TRUE);'在控制台应用程序 – 2014-09-04 12:43:15

回答

1

我看不出您的服务将如何找到加密证书。

你应该有这样的事情:

<behaviors> 
<serviceBehaviors> 
    <behavior name="mySvcBehavior"> 
     <serviceCredentials> 
     <serviceCertificate findValue="xxxxxx" x509FindType="FindByThumbprint" /> 
     </serviceCredentials> 
    </behavior> 
</serviceBehaviors> 
</behaviors> 

这是一个相当不错的一步一步的指导,在WCF网站建立HTTPS。 http://robbincremers.me/2011/12/27/wcf-transport-security-and-client-certificate-authentication-with-self-signed-certificates/

+0

有没有什么方法可以让我避免安装证书并仍然能够使用HTTPS? – RichardMc 2014-09-04 14:23:12

+1

不......你需要证书。只要将您的安全性更改为“传输”并将您的端点更改为“HTTPS”,即使没有证书和编程,也无法让服务找到证书。但即使您使用带证书的HTTPS,如果证书是自行生成的,Firefox仍会抱怨证书未从官方CA(证书颁发机构)发布。您可能必须将证书添加到可信列表。 – Brian 2014-09-05 07:37:46