2014-04-04 46 views
0

我們開發了調用Web服務來獲取數據的ASP.NET Web應用程序。訪問Web服務需要證書。當我們從Visual Studio啓動應用程序時,一切正常,但當我們在IIS服務器上發佈網站時,它不起作用。Asp.NET - 調用Web服務證書錯誤,IIS管理器

什麼是在IIS管理器中作出的必要設置。我們有3個證書,一個.pfx和兩個.cer根文件。

+0

你能描述一下你如何調用Web服務嗎?也許添加一些示例代碼。也請描述你在哪裏以及如何使用證書(pfx,cer ...) – pepo

回答

0

這是從web.config中

代碼

<behaviors> 
    <endpointBehaviors> 
    <behavior name="Client2WaySSL"> 
     <clientCredentials> 
      <clientCertificate findValue="CN=lsu.test.client.service.mup.hr" storeLocation="CurrentUser" /> 
      <serviceCertificate> 
      <defaultCertificate findValue="CN=test.service.mup.hr" storeLocation="CurrentUser" storeName="TrustedPeople" /> 
      </serviceCertificate> 
     </clientCredentials> 
     </behavior> 
    </endpointBehaviors> 
</behaviors> 
<bindings> 
    <basicHttpBinding> 
    <binding name="BasicHttpBinding_MUP.LokalnaSamouprava.FizickaOsoba.WebServiceInterface"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Certificate" proxyCredentialType="None" realm="" /> 
     </security> 

    </binding> 
    <binding name="BasicHttpBinding_MUP.LokalnaSamouprava.FizickaOsoba.WebServiceInterface1" /> 
    </basicHttpBinding> 
</bindings> 
<client> 
    <endpoint address="https://lsu.test.service.mup.hr:9001/FizickaOsobaService.svc" binding="basicHttpBinding" behaviorConfiguration="Client2WaySSL" bindingConfiguration="BasicHttpBinding_MUP.LokalnaSamouprava.FizickaOsoba.WebServiceInterface" contract="MUPServis.MUPLokalnaSamoupravaFizickaOsobaWebServiceInterface" name="MUP.LokalnaSamouprava.FizickaOsoba.WebServicePort" /> 
</client> 

我們已經安裝了通過MMC控制檯certficates。

1

當您從Visual Studio運行它時,您將使用憑據運行該應用程序。即使IIS Express在您的憑據下運行。

如果您將證書導入到CurrentUser商店,那麼您已將其導入到您帳戶下的商店。 當您將ASP.NET頁面部署到IIS時,默認情況下它將在DefaultAppPool用戶(IIS APPPOOL \ DefaultAppPool)下運行。該用戶擁有不同的證書存儲,並且可能沒有任何證書。

將這些證書導入到LocalMachine存儲(以mmc爲本地計算機存儲),並在私鑰上設置權限,以便DefaultAppPool(或您設置的任何其他池用戶)可以訪問此私鑰 或將這些證書導入到當前用戶存儲的DefaultAppPool 或(快速而不是漂亮的方式)設置DefaulAppPool使用您的帳戶憑據。

我會親自去第一個選項。

+0

我設法使它工作,這正是你上面回答的問題,謝謝你的努力...... –