繁体   English   中英

在WCF Rest Service中找不到端点的自定义消息

[英]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框架中对其进行自定义。 问题是,它们很难实施。 我在回答以下另一个问题时实现了意外的消息调度程序:

处理传递给WCF服务的无效URI

让我知道您是否需要任何进一步的信息!

对于上述问题,我没有找到任何可行的解决方案。 但是我找到了另一种选择。 在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM