我有一个 WCF REST Web 服务,通过 global.asax 中的服务路由托管,如下所示;
protected override void RegisterRoutes(System.Web.Routing.RouteCollection routeTable)
{
routeTable.Add(new ServiceRoute("", new WebServiceHostFactory(),
typeof(UserService)));
}
我想知道是否可以在同一应用程序中托管另一个 Web 服务(即 WCF 数据服务)。
protected override void RegisterRoutes(System.Web.Routing.RouteCollection routeTable)
{
routeTable.Add(new ServiceRoute("", new WebServiceHostFactory(),
typeof(UserService)));
routeTable.Add(new ServiceRoute("OData", new DataServiceHostFactory(),
typeof(UserDataService)));
}
尝试在我的浏览器中导航到http://本地主机:端口/ http://localhost:port/在导航到时调出标准 REST 服务http://localhost:端口/OData http://localhost:port/OData弹出“未找到端点页面”。
原因是我需要保留 REST 服务中的遗留代码,但也想通过数据服务公开一些纯数据。
事实证明这非常简单,我完全忽略了显而易见的事情。
当您托管多个服务路由时,您无法像在单个路由上那样在任何路由上拥有默认/空路由前缀。请注意,这就是我在上面的 UserService 路线问题中所得到的内容。
因此,为两个服务路由提供路由前缀允许这两个服务托管在同一个 global.asax 中。
提供代码以确保完整性...
protected override void RegisterRoutes(System.Web.Routing.RouteCollection routeTable)
{
routeTable.Add(new ServiceRoute("Rest", new WebServiceHostFactory(),
typeof(UserService)));
routeTable.Add(new ServiceRoute("OData", new DataServiceHostFactory(),
typeof(UserDataService)));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)