2012-03-13 71 views
0

我已經創建了一個簡單的web服務。 然後我創建了一個控制檯主機必須通過HTTPS URL託管服務..wcf爲什麼我看不到我的https網站

這是我的配置:

 <?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
     <services> 
      <service behaviorConfiguration="mexBehaviour" name="NuriServiceLibrary.NuriService"> 
       <clear /> 
       <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBindingConfig" 
        contract="NuriServiceLibrary.iNuriService" listenUriMode="Explicit" /> 
       <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
       <host> 
        <baseAddresses> 
         <add baseAddress="https://192.168.....:8001/SecureConsole" /> 
        </baseAddresses> 
       </host> 
      </service> 
     </services> 
     <behaviors> 
     <serviceBehaviors> 
      <behavior name="mexBehaviour"> 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" /> 
      </behavior> 
     </serviceBehaviors> 
     </behaviors> 

     <bindings> 
     <basicHttpBinding> 
      <binding name="basicHttpBindingConfig"> 
      <security mode="Transport"> 
       <transport clientCredentialType="None" /> 
      </security> 
      </binding> 
     </basicHttpBinding> 
     </bindings> 
    </system.serviceModel> 
</configuration> 

,這是我的Program.cs:

static void Main(string[] args) 
     { 
      ServiceHost host = new ServiceHost(typeof(NuriService)); 
      host.Open(); 
      foreach (Uri address in host.BaseAddresses) 
      { 
       Console.WriteLine("Listening on " + address); 
      } 
      Console.WriteLine("Press <Enter> to terminate Host.\n\n"); 
      Console.ReadLine(); 

      host.Close(); 
     } 

我通過以下方式創建了證書: 1. makecert.exe -sr LocalMachine -ss My -n CN = 192.168 ..... -sky exchange -sk -pe 2. netsh http add sslcert ipport = 192.168 ....: 8001 certhash =(故意離開)appid = {(故意離開)}

但問題是,我看不到我的https網頁...我看到這個網站不可用.. 任何人有想法?

+0

? – 2012-03-13 12:49:48

+0

沒有,我添加了端口:9000的IP,但後來網站wouldnt也顯示.. – skyyyy 2012-03-13 12:53:04

+0

你在哪裏「*添加*」與端口9000的IP地址?另外,當你說「*網站*」時,你的意思是WCF幫助頁面? – 2012-03-13 12:57:40

回答

1

嘗試添加HttpsGetUrl屬性的<serviceMetadata>並指定空字符串

<serviceBehaviors> 
    <behavior name="mexBehaviour"> 
     <serviceMetadata httpGetEnabled="false" 
          httpsGetEnabled="true" 
          httpsGetUrl="" /> 
    </behavior> 
</serviceBehaviors> 

這將使服務元數據可通過該服務的base address

https://localhost:8001/SecureConsole?wsdl 
+0

不工作的網頁仍然不顯示:( – skyyyy 2012-03-13 13:17:31

+0

什麼HTTP錯誤你會得到?404?500? – 2012-03-13 13:20:02

+0

111(網:: ERR_TUNNEL_CONNECTION_FAILED):未知錯誤 – skyyyy 2012-03-13 13:20:30

0

通過你實現你只能期望通過在Web瀏覽器中尋址您的基地址來查看由您的服務發佈的元數據。在你嘗試做這件事情之前,值得在視覺工作室的debugegr中運行你的服務(不要運行主機,只需運行service/lib)。如果這樣運行沒有錯誤,那麼嘗試並在瀏覽器中解決該服務。

如果你真正想要的是託管服務,並和使用Web瀏覽器作爲客戶端,那麼你需要考慮什麼是您使用的URL來訪問服務元數據ASP.net

相關問題