2010-07-22 159 views
1

我有一個WCF服務(.NET 4)託管在IIS中。我的服務合同有一個方法有:處理來自web服務代理的WCF異常

[FaultContract(typeof(string))] 

我爲這個方法服務實現驗證輸入參數,可能會拋出這樣一個異常:

if (string.IsNullOrWhiteSpace(siteName)) { throw new FaultException("siteName is required."); } 

這項服務的消費方程序是一個.NET 2控制檯程序。在這個應用程序中,我通過右鍵單擊「引用」和「添加Web引用」來生成web服務代理。

當我嘗試從客戶端應用程序調用服務方法時,通過發送無效的siteName,我得到一個503服務不可用異常,而不是帶有自定義錯誤消息的FaultException。

如何使FaultException與自定義錯誤消息一起傳播到客戶端程序?

UPDATE:

的例外,我在客戶端應用程序中獲得的是:

System.ServiceModel.ServerTooBusyException: The HTTP service located at http://www.example.com/services/myservice.svc is too busy. ---> System.Net.Web Exception: The remote server returned an error: (503) Server Unavailable.
at System.Net.HttpWebRequest.GetResponse() at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpCha nnelRequest.WaitForReply(TimeSpan timeout) --- End of inner exception stack trace ---

+0

那麼,如果你的客戶使用.NET 2.0,並且你做了「添加Web引用」,那麼你基本上會得到一個「舊式」web服務,它對'FaultException'和其他WCF概念一無所知。爲了捕獲和處理WCF錯誤異常,您需要在客戶端上安裝WCF - > .NET 3.0或更高版本 – 2010-07-22 21:26:44

+0

嘗試通過在.NET 4中創建新的控制檯應用程序,使用「添加服務引用」,但獲得了相同的結果:( – sunda2010 2010-07-22 21:58:38

回答

0

問題正由我們的web項目自定義HTTP模塊引起的。所以這不完全是一個WCF問題,而是我們的解決方案特有的問題。謝謝!