簡體   English   中英

WCF服務調用返回'407 Proxy Authentication Required'

[英]WCF service call returns '407 Proxy Authentication Required'

我正在托管一個WCF Web服務(在Azure上),並將WPF桌面應用程序發送給一個客戶端(顯然)嘗試通過代理訪問該服務。

服務調用失敗,返回

遠程服務器返回意外響應:407需要代理身份驗證

客戶端app.config文件的ServiceModel部分如下所示:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_ILicensing"  closeTimeout="00:00:15" openTimeout="00:00:15"
                 receiveTimeout="00:00:15" sendTimeout="00:00:15" maxReceivedMessageSize="2147483647"
                 maxBufferSize="2147483647">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
                        maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
                        maxNameTableCharCount="2147483647"/>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="xxxxxxx"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ILicensing"
                contract="Cloud.ILicensing" name="BasicHttpBinding_ILicensing" />
    </client>
</system.serviceModel>

這基本上就是我所知道的。

我想知道通過修改app.config文件和/或服務的web.config文件來修復此行為(這應該無關緊要,因為無論如何都沒有到達服務)。

據我useDefaultWebProxy ,綁定節點有屬性useDefaultWebProxy ,它要求查找系統代理配置並使用它來連接服務。 但是,由於默認值為true ,我希望將其設置為true顯然不會改變任何東西(我猜這基本上是默認值的定義)。

  1. 考慮到useDefaultWebProxy沒有設置代理身份驗證失敗的原因是什么,因此它應該是true因為它是默認值?

  2. 考慮到限制信息,如何修改app.config以解決問題? 基本上:我需要知道/詢問我的客戶端(即代理服務器地址)以及我需要在客戶端配置文件中插入信息的位置?

  3. 如何在本地計算機上設置模擬問題的測試環境?

對於12 ,您需要配置System.Net以提供默認代理的默認憑據 - 默認情況下它不會這樣做(因為在自​​動訪問互聯網的應用程序中隱藏的回調代碼會很糟糕)。

<system.net>
    <defaultProxy useDefaultCredentials="true" />
</system.net>

對於3 ,我不完全確定如何在本地測試它,因為您需要一台機器充當代理,這些通常是域控制器類型的機器。 您可以使用2個虛擬機進行模擬,但我希望您擁有一台功能強大的機器,以便對此進行測試似乎需要付出很多努力。

你可以從代碼中做到這一點

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;

暫無
暫無

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

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