作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我要处理所有WebServiceException
由我的服务客户抛出。现在有没有好的方法可以做到这一点?
例如,我在 Windows 窗体应用程序周围传递了一个 ServiceClientBase。我在 http header 中将 api key 传递给服务器。对于任何 API key 无效的请求,我想显示一个消息框,告诉用户该请求未经授权,他们应该设置 API key 。但我不希望到处都有这段代码:
try
{
_client.Get(new ReqDto());
}
catch (WebServiceException ex)
{
if(ex.StatusCode == 401)
Util.ShowUnauthorizedMessageBox();
}
_client.WebServiceExceptionHandler += TheHandler;
最佳答案
如果我可以将此作为设计问题而不是 API 问题来处理,那么答案就是包装您的服务客户端。就个人而言,我做了类似的事情,所以我可以在客户端记录服务异常。
这可能是一个起点:
public class MyServiceClient : IDisposable
{
public ServiceClientBase ServiceClient { get; set; }
string _serviceUri;
public string ServiceUri
{
get { return _serviceUri; }
set { _serviceUri = value; ServiceUriChanged(); }
}
public MyServiceClient()
{
ServiceUri = "http://127.0.0.1:8080";
}
public void Dispose()
{
ServiceClient.Dispose();
}
public TResponse Get<TResponse>(IReturn<TResponse> request)
{
try
{
return ServiceClient.Get(request);
}
catch (WebServiceException ex)
{
if(ex.StatusCode == 401)
Util.ShowUnauthorizedMessageBox();
}
}
void ServiceUriChanged()
{
if (ServiceClient != null)
ServiceClient.Dispose();
ServiceClient = new JsonServiceClient(ServiceUri);
}
}
IReturn<T>
界面有助于整合您想要的功能)。但是,如果您对它不满意,那么您距离
Demis 的对话框只有一个拉取请求。关于改进它。 (-=
关于servicestack - ServiceClientBase 的异常处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093211/
我要处理所有WebServiceException由我的服务客户抛出。现在有没有好的方法可以做到这一点? 例如,我在 Windows 窗体应用程序周围传递了一个 ServiceClientBase。我
我是一名优秀的程序员,十分优秀!