[英]Customized message for endpoints not found in WCF Rest Service
我正在使用WCF创建一个ReSTful服务。 说我的OperationContract是这样的:
[OperationContract]
[WebGet(
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "GetItemList/{token}/{value}"
)]
Stream GetItemList(string token);
因此,当我致电http://example.com/Service1.svc/GetItemList/myToken/myValue时 ,将调用该服务。
现在,我想编写一个默认方法,说一些链接,“不存在方法/端点”,然后用户调用http://example.com/Service1.svc/GetItemList/myToken/或http://example.com/ Service1.svc / GetItemList / myValue /或http://example.com/Service1.svc/GetItemList/
如何在我的代码中实现呢?
现在我在做什么就像:
[OperationContract]
[WebGet(
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "GetItemList/"
)]
string ValidateItemList();
[OperationContract]
[WebGet(
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "GetItemList/{Val1}"
)]
string ValidateItemList(string Val1);
在函数中,我只返回了一个字符串,内容为“ No method Exists”。
有没有更好的办法? 我可以针对指向我的服务的URL自定义错误消息吗? 例如,针对所有不存在的url请求的通用消息,这些消息直接指向我的服务?
基本上,WCF的体系结构尝试将任何协议的低级组件(在本例中为http)抽象化,因此您不必担心这些细节类型。 不幸的是,该引擎无法提供一种处理引擎无法正确路由的好方法。
在这种情况下,无法将URI“分派”到正确的合同实现类。 该引擎具有称为Dispatchers的这些很棒的组件,请等待,可以通过配置或以编程方式在wcf框架中对其进行自定义。 问题是,它们很难实施。 我在回答以下另一个问题时实现了意外的消息调度程序:
让我知道您是否需要任何进一步的信息!
对于上述问题,我没有找到任何可行的解决方案。 但是我找到了另一种选择。 在VS 2012中,Microsoft发布了ASP.NET Web API。 他们说,这是WCF Rest的下一版本。 因此,在这种情况下,您可以非常轻松地处理这些情况。 我们可以在其中使用路由方法。
对该解决方案感兴趣的任何人都可以在这篇文章中获得一个入门: http : //www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web- api
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.