我最近一直在使用 c# asp.net (3.5) 开发一些 Web 服务。
我的方法是这样的,并返回一个由一些基本的用户相关字段(姓名、年龄、我等)组成的用户对象。
[WebMethod, SoapHeader("AuthHeader")]
public user[] Employees(int count)
{
user[] myUsers = new user[count];
<logic here inc. checking if user is authorised>...
return myUsers;
}
如果使用 Web 服务 ID 的客户端授权失败,则在 Web 服务中返回错误,格式正确。
实现此目标的最佳实践方法是什么?我想简单地推送一个 Response.StatusCode 或一个 Null 返回值不是很好的做法吗?
我当前的有效负载 XML 看起来像..
<ArrayOfUser>
<user>
<empid>57344</empid>
<firstname>Dave</firstname>
<surname>Johnson</surname>
</user>
<user>
<empid>17324</empid>
<firstname>Mike</firstname>
<surname>Doe</surname>
</user>
</ArrayOfUser>
如果发生错误,我应该返回类似...的内容吗?
<soap:error>
<errorcode>12345</errorcode>
<errorstring>Invalid username/password</errorstring>
</soap:error>
或者有更好的最佳实践方式吗?
第二个问题是,我将如何构建我的方法以便返回这样的 XML 结构?目前我的“Employees”方法是“User[]”类型,所以必须返回一个“User”类型的数组,但如果出现错误,我想返回一个不同的类型来模拟上面的 XML 结构,甚至是一个简单的表示发生错误的字符串。
我将如何实现这一点?
任何帮助都会很棒!干杯!
最佳答案
只需让您的方法抛出异常 - .Net 框架会将其转换为 SOAP 错误消息。
如果你想更多地控制返回的 SOAP 错误消息,那么抛出一个 SoapException
关于c# - .NET Web 服务 - 如何返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11755585/