1
我正在實現.Net Webservice(不是WCF),並且需要在某些情況下拋出SoapFault,根據協議,我應該發送一個包含InternalFaultCode元素的自定義錯誤。如何在.net WebService中拋出SoapFault?
我試過用我自己的FaultObject拋出一個SoapFaultException作爲細節,但客戶端在faultstring元素下獲得該異常的.ToString()。
// This is the method I call every time I want to throw a FaultException
private void ThrowFault(string internalCode, string errorMsg)
{
throw new SoapException(errorMsg, SoapException.ServerFaultCode, new FaultException<InternalFaultDataType>(new InternalFaultDataType("Server", errorMsg, internalCode)));
}
// This is just an example
[System.Web.Services.WebMethod()]
[return: System.Xml.Serialization.XmlElement("authenticateUserResponse")]
public AuthenticateUserResponse AuthenticateUser(AuthenticateUserRequest data)
{
var x = User.GetByUserName(data.username);
if(null != x) {
// Check auth
return AuthenticateUserResponse.fromUser(x);
} else {
this.ThrowFault("INVALID_CREDENTIALS", "Invalid username or password");
}
}
添加一些示例代碼可以幫助我們 –
我不知道該怎麼告訴你,因爲我不知道如何從Web服務把我自己的SoapFaultException。現在我扔了其中的一個,但顯然它被抓到並重新拋出,我不知道如何。 –
所以你可以把這個代碼..所以,我們也可以anlayse –