c# - 如何正确地从 Web 服务返回值?

标签 c# .net web-services

我不熟悉网络服务。我使用网络服务创建了一个电子邮件服务。

我的问题是:

如何使邮件发送时带有“已发送”和“已发送失败”的 MsgBox?

最佳答案

您需要创建一个自定义响应类型并从您的服务中返回它。客户端(调用服务的人)应该阅读响应并负责弹出一个消息框,说明服务调用是否成功。

这是该类型的样子:

[DataContract]
public class SendMessageResponse
{
    [DataMember]
    public bool Successful { get; set; }

    [DataMember]
    public List<string> Messages { get; set; }

    public SendMessageResponse()
    {
        this.Successful = true;
        this.Messages = new List<string>();
    }

    public void ProcessException( Exception ex )
    {
        this.Messages.Add( ex.Message );
        this.Successful = false;
    }
}

这是服务代码的样子:

[WebMethod]
public SendMessageResponse SendMessage(...)
{
    var response = new SendMessageResponse();

    try
    {
        // Do your send message stuff here...
        response.Successful = true; // or whatever you want to say
    }
    catch( Exception ex )
    {
        response.ProcessException( ex );
    }

    return response;
}

这样,您的服务永远不会使 channel 出错,并且将始终返回您的响应对象(即使在出现异常的情况下)。然后,您可以使用响应对象向客户端传达服务调用的状态。

这是客户端的样子:

public void SendMessage( MessageServiceClient proxy, string mail, string authstr )
{
    MessageServiceClient.SendMessageResponse response = proxy.SendMessage( mail, authstr );
    if( response.Successful )
    {
        MessageBox.Show( "Message Sent" );
    }
    else
    {
        MessageBox.Show( "Message Failed to Send: " + response.Messages.FirstOrDefault() );
    }
}

客户端代码是一个粗略的示例,但它应该让您了解我在说什么。

关于c# - 如何正确地从 Web 服务返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6187227/

相关文章:

c# - 将 IQueryable linq 查询转换为 IEnumerable<T> 会取消 linq 优化的工作方式吗?

c# - 如何在 C# 中读取 mysql 中的特定列和单元格?

.net - 在 .NET 中模拟 VBA 算法

.net - 什么时候copy-local应该设置为true,什么时候不应该设置?

web-services - 授权和构建 RESTful 后端的正确方法是什么

java - Web 服务的简单 java 客户端代码 - 与 QName 有关吗?

c# - 如何导出 C# dll 方法/函数以在 C++ 中使用它

c# - 按外键分组并选择 (LINQ)

负载均衡系统的ASP.NET缓存解决方案

java - Web 服务可以在运行时加载 jar 吗