我最近一直在使用 c# asp.net (3.5) 开发一些 Web 服务。
我的方法就是这样,返回一个 User 对象,其中包含一些基本的用户相关字段(姓名、年龄、i 等)。
[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 当 auth'd 看起来像..
<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 结构,甚至是一个简单的说明发生错误的字符串。
我将如何实现这一目标?
任何帮助都会很棒!干杯!