簡體   English   中英

IIS 7.0 Web服務-在HTTP(80)上運行,在HTTPS(443)上失敗,錯誤404

[英]IIS 7.0 Web Service - Works on HTTP (80), Fails with error 404 on HTTPS (443)

Windows 2008上的IIS 7.0

WCF Web服務,VS 2010中的.NET 4

Web服務是通過發布安裝的,我在服務器上擁有完整的管理員權限。 有幾種復雜的方法,但是有一種簡單的方法可以返回構建版本。 如果我們可以解決這個問題,則可以全部修復-這是我的界面:

namespace MyNameSpace
{

    [ServiceContract]
    public interface WebInterface
    {

        [OperationContract]
        [WebGet]
        string GetVersion();

嘗試通過HTTP://連接,一切正常!

嘗試通過HTTPS://連接,但未找到404文件。

當瀏覽到HTTP和HTTPS上完全相同的URL時,我可以到達通用的“您已創建Web服務...”頁面,包括完整的Web服務路徑和C#通用示例代碼。

在C#中,我讀到證書可能會引起麻煩,並且我已經實現了委托重載來批准我們的服務器證書。

我懷疑Web.config文件中缺少一個或多個條目,但是我不知道從哪里開始。 我曾嘗試過Google搜索和Stack Overflow搜索,但沒有找到正確的搜索字詞組合來解決此特定問題。

網絡配置:

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="HttpGetMetadata">
        <serviceDebug includeExceptionDetailInFaults="true"/>
        <serviceMetadata httpGetEnabled="true" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <services>
    <service name="LinkService" behaviorConfiguration="HttpGetMetadata">
      <endpoint address="" contract="WebInterface" binding="basicHttpBinding" />
    </service>
  </services>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>

請幫助。

您正在使用basicHttpBinding的默認值,並且該綁定的默認安全模式是None。 您需要定義綁定,並在配置中將安全模式設置為“ Transport 將Bindings部分添加到ServiceModel部分,如下所示:

<serviceModel>
  <Bindings>
    <basicHttpBinding name="secureBinding">
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
    </basicHttpBinding>
  </Bindings>
</serviceModel>

然后,您需要通過bindingConfiguration屬性將此綁定分配給端點,如下所示:

<endpoint address="" 
          binding="basicHttpBinding" 
          bindingConfiguration="secureBinding"  
          contract="WebInterface" />

您可能還希望啟用httpsGetEnabled

<serviceMetadata httpGetEnabled="true"
                 httpsGetEnabled="true" />

請參閱帶有傳輸安全性的BasicBinding (這是示例代碼所基於的)。

您也可以使用諸如“ BasicHttpBinding WCF SSL”之類的術語和類似的內容在Google上進行搜索-網絡上有很多示例和信息,僅需使用正確的詞即可:)

另外,我不是100%確信transportClientCredential設置對您的情況是正確的(它可能需要是Certificate ),但是對於WCF,我對SSL所做的工作很少。

可能還有其他問題(例如,如何在計算機上設置IIS),但是以上是配置所需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM