如何从Web服务正确返回值?

时间:2011-05-31 11:57:47

标签: c# .net web-services

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

我的问题是:

如何使用MsgBox“已发送”和“已发送失败”进行电子邮件发送?

3 个答案:

答案 0 :(得分:5)

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

这是类型的样子:

[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;
}

这样,您的服务永远不会对通道进行故障,并且始终会返回您的响应对象(即使在例外的情况下也是如此)。然后,您可以使用响应对象向客户端传达服务呼叫的状态。

以下是客户端的外观:

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() );
    }
}

客户端代码是一个粗略的例子,但它应该让你知道我在说什么。

答案 1 :(得分:1)

尝试添加

  

返回“已发送”

代码..

答案 2 :(得分:0)

Web服务位于Web服务器而非客户端,通过Visual Studio,您可以添加Web服务的Web引用,这将创建一个代理类,从您的网站调用Web服务,具体取决于您的响应来自该网站可能是一个布尔值,然后您可以告诉客户端添加一个消息框。

干杯