c# - .NET Web 服务 - 如何返回错误?

标签 c# .net xml web-services error-handling

我最近一直在使用 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/

相关文章:

c# - ReSharper "Cannot resolve symbol"即使在项目构建时

c# - 如何验证以色列电话号码?

xml - 空元素可以包含子元素吗

c# - 获取 XML 文件的版本而不从服务器下载它

c# - 系统.Xml.XmlException : Unexpected end of file while parsing Name has occurred

c# - 在四个不同的间隔中随机加倍

.net - 如何使用 silverlight 3 DataGrid 插入新行(而不使用 DataForm)?

c# - 访问 UserControl 的内部控件

c# - 更改 PropertyGrid 左侧集合编辑器/ View 的宽度

c# - 如何将具有不同名称但具有相同属性集的 xml 元素反序列化为类型化数组/集合