【发布时间】:2015-04-21 14:31:37
【问题描述】:
我正在实现一个 .Net Web 服务(不是 WCF)并且需要在某些情况下抛出 SoapFault,根据协议我应该发送一个包含 InternalFaultCode 元素的自定义错误。
我尝试使用我自己的 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。现在我正在扔其中一个,但很明显它被抓住并重新扔了,我不知道如何。
-
所以你能不能把那个代码..这样我们也可以分析
-
我添加了代码,我清理了它,所以它更短!
标签: c# .net web-services soap