簡體   English   中英

用於WebHttpBinding的WCF配置,其中SSL在負載均衡器處終止

[英]WCF configuration for webHttpBinding with SSL terminated at load balancer

我有一個使用webHttpBinding的WCF REST服務,但在使其在F5負載均衡器后面的測試環境中運行時遇到了一些麻煩-至少我相信負載均衡器是一個問題。

該服務已被證明可以使用http或https在本地運行和運行(“在我的機器上工作”)。 該服務托管在使用它的同一站點中。

我們的測試環境位於F5負載均衡器的后面,該負載均衡器終止SSL並通過http將請求轉發到服務器。 我們的IT員工已指示,到測試環境的所有傳入流量均為http,並維護該站點在IIS中配置了http和https綁定。 我的本地計算機和測試環境之間唯一的明顯區別是我的本地計算機是IIS 8,而測試環境是IIS 7.5。

路線注冊如下:

RouteTable.Routes.Add(new ServiceRoute("REST/stuff", new WebServiceHostFactory(), typeof(StuffService)));

當前,這是在本地工作的相關配置:

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
<standardEndpoints>
  <webHttpEndpoint>
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true">
      <security mode="Transport"/>
    </standardEndpoint>
  </webHttpEndpoint>
</standardEndpoints>
<bindings>
  <webHttpBinding>
    <binding>
      <security mode="Transport"/>
    </binding>
  </webHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

最初,此服務被部署到沒有SSL的測試環境中,並且在訪問使用該服務的頁面時收到此錯誤:

混合內容:“ https://foo.bar.com/thing.aspx ”上的頁面已通過HTTPS加載,但請求了不安全的XMLHttpRequest端點“ http://foo.bar.com/REST/stuff/ ”。 該請求已被阻止; 內容必須通過HTTPS提供。

現在對我來說這似乎很神秘,因為該網站是通過https訪問的,並且對該服務的調用使用的是相對URL。 不幸的是,由於更改了配置,因此我現在無法調試。

當我收到上述錯誤時,我不知道F5,並認為我需要做的就是將服務配置為使用傳輸安全性,就像上面的配置一樣。 在將配置更改為使用傳輸安全性之后,該服務無法在測試環境中激活,從而在服務器上啟動此錯誤:

由於編譯期間發生異常,無法激活服務“ / REST / stuff”。 異常消息是:找不到與綁定WebHttpBinding的端點的方案https匹配的基地址。 注冊的基址方案為[http]。

我認為,這表明該服務希望使用https進行操作,但是已注冊的基址方案中缺少https可以阻止該操作,因此該服務根本無法初始化。 我了解到IIS中缺少https綁定時可能會發生這種情況(盡管IT部門沒有這樣做)。

我不確定我還能做些什么來啟用我的用例。 任何幫助是極大的贊賞!

我的配置很好。 出於某種原因,當通過負載平衡器進行交互時,客戶端在使用相對URI調用服務時未使用https。 有關我認為是我的問題的更多信息,請參見如何在AngularJS中使用HTTPS

暫無
暫無

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

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