2014-09-04 55 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