我想如果客户端发送错误的凭据然后服务抛出肥皂异常,但我尝试但仍然没有运气。
从此处查看我的更新代码https://github.com/karlosRivera/EncryptDecryptASMX
任何人都可以下载我的代码并在他们的PC上运行以捕获问题。
[AuthExtension]
[SoapHeader("CredentialsAuth", Required = true)]
[WebMethod]
public string Add(int x, int y)
{
string strValue = "";
if (CredentialsAuth.UserName == "Test" && CredentialsAuth.Password == "Test")
{
strValue = (x + y).ToString();
}
else
{
throw new SoapException("Unauthorized", SoapException.ClientFaultCode);
}
return strValue;
}
这一行throw new SoapException("Unauthorized", SoapException.ClientFaultCode);
响应XML正文没有得到我从soapextension进程消息函数中看到的更改。
所以我现在有两个问题
1)我希望服务中的throw SoapException
需要更改肥皂响应。
2)从客户端我需要抓住SoapException
请从链接中查看我的最新代码,并告诉我要更改的内容。感谢
答案 0 :(得分:2)
答案 1 :(得分:0)
另一个选择是避免发送SoapException
,但是更复杂的对象嵌入了错误语义。 E.g。
[Serializable]
class Result<T>
{
public bool IsError { get; set; }
public string ErrorMessage { get; set; }
public T Value { get; set; }
}
在这种情况下,您的方法可能如下所示:
[AuthExtension]
[SoapHeader("CredentialsAuth", Required = true)]
[WebMethod]
public Result<string> Add(int x, int y)
{
string strValue = "";
if (CredentialsAuth.UserName == "Test" && CredentialsAuth.Password == "Test")
{
return new Result<string> { Value = (x + y).ToString() };
}
else
{
return new Result<string> { IsError = true, ErrorMessage = $"Unauthorized - {SoapException.ClientFaultCode}" };
}
}
可以开发 Result
以包含一个字段/输入错误数组,以返回与错误输入参数值相关的更精确的错误消息。