2012-01-04 152 views
15

我創建了使用免費web服務的簡單WinForms應用程序http://www.webservicemart.com/uszip.asmx。但是,這個應用程序無法使用服務操作錯誤:WCF客戶端 - 運行web服務時需要407代理身份驗證

ChannelFactory<ServiceReference1.USZipSoap> proxy = new ChannelFactory<ServiceReference1.USZipSoap>("USZipSoap"); 
ServiceReference1.USZipSoap client = proxy.CreateChannel(); 
string str = client.ValidateZip("12345"); 
MessageBox.Show(str); 

這方面的問題與我公司的網絡或這是對一個代理:創建代理,並觸發業務操作

The remote server returned an unexpected response: (407) Proxy Authentication Required (The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied)

代碼webservicemart.com的一面?

我GOOGLE了很多關於更改配置文件,創建自定義綁定等信息。但我覺得缺乏更多的基本理解...
如果這個錯誤是關於我們公司網絡的ISA服務器,那麼什麼我應該向ISA Server進行配置,以便不限制我使用外部Web服務?

+1

是的,這是你的本地網絡中的代理問題。顯示綁定配置,並檢查是否在Internet Explorer中配置了代理。 – 2012-01-04 09:02:47

+0

我剛剛準備好了我的配置,但它太大而不適合評論大小,我面臨限制,說我無法回答自己的問題。
但無論如何...我真的在我的瀏覽器設置中配置了代理。
我將useDefaultWebProxy從true更改爲false後,我得到了一些進展。現在,我有EndpointNotFoundException異常,並顯示消息「沒有可在http://www.webservicemart.com/uszip.asmx上收聽的端點可以接受該消息,這通常是由地址或SOAP操作引起的。請參見InnerException,如果存在, 更多細節。」 – 2012-01-04 12:27:23

+0

和InnerException類型System.Net.WebException與消息「的遠程名稱無法解析:'www.webservicemart.com'」 – 2012-01-04 12:29:27

回答

43

在您的綁定配置中,確保useDefaultWebProxy設置爲true - 它將使用您在IE中找到的配置。在您的配置文件中添加以下代碼片段,以確保您的默認憑據用於身份驗證的代理服務器上:

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

它的工作原理!非常感謝你! :) – 2012-01-04 14:33:45

+0

有趣的是,這看起來與在默認代理上設置屬性並不相同。 – 2012-05-04 18:01:52

+0

@VincentHubert更有趣的是知道什麼是不一樣的,沒有評論掛在那裏 – 2013-04-30 08:38:21

1

好像您公司中的所有流量正在通過代理重定向。你能從IE瀏覽到Web服務並查看其wsdl並調用測試頁來查看一些結果。如果是這樣的話,那麼嘗試添加下面的部分到你的web.config:

<system.net> 
<defaultProxy>  
<proxy proxyaddress="<your proxy address>" bypassonlocal="true" /> 
</defaultProxy> 
</system.net> 

您可以從您的IE瀏覽器的設置中找到的代理服務器地址。

注意:當你移動到不同的環境,那麼你需要確保它的相同的情況下,你需要刪除上述配置。

+0

非常感謝您的回覆。我在解決這個問題上取得了一些進展。我已經將useDefaultWebProxy從true改爲false,之後好像我已經通過了我的代理驗證。但我仍然有另外一個例外情況,說「沒有終端可以在http://www.webservicemart.com/uszip.asmx上收聽,可以接受該消息。」我也嘗試了另一個免費的web服務,並剛剛收到相同的錯誤。 – 2012-01-04 12:32:58

+0

我試過訪問上面的Web服務,它工作正常。如果你需要幫助,只需發佈​​一些更新,並可以嘗試幫助你。 – Rajesh 2012-01-04 12:35:40

2

這個工作對我來說...更換10.1.0.50,並與你的代理服務器的IP端口號

<system.net> 
    <defaultProxy useDefaultCredentials="true"> 
     <proxy usesystemdefault="False" proxyaddress="http://10.1.0.50:8080" bypassonlocal="True" /> 
    </defaultProxy> 
    </system.net> 
+0

我正在使用@Ladislav Mrnka answare,但它也適用於我。 – MFedatto 2018-02-23 15:00:18

0

有時在未來。

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials; 
相關問題