我有一個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 ---
那麼,如果你的客戶使用.NET 2.0,並且你做了「添加Web引用」,那麼你基本上會得到一個「舊式」web服務,它對'FaultException'和其他WCF概念一無所知。爲了捕獲和處理WCF錯誤異常,您需要在客戶端上安裝WCF - > .NET 3.0或更高版本 – 2010-07-22 21:26:44
嘗試通過在.NET 4中創建新的控制檯應用程序,使用「添加服務引用」,但獲得了相同的結果:( – sunda2010 2010-07-22 21:58:38