我不熟悉网络服务。我使用网络服务创建了一个电子邮件服务。
我的问题是:
如何使邮件发送时带有“已发送”和“已发送失败”的 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/