gpt4 book ai didi

wcf - 如何在同一个 global.asax 中托管 WCF REST 服务和 WCF 数据服务

转载 作者:行者123 更新时间:2023-12-04 14:33:40 26 4
gpt4 key购买 nike

我有一个 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://localhost:port/在导航到 http://localhost:port/OData 时可以很好地启动标准 REST 服务调出“未找到终点页面”。

这样做的原因是我需要保留 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)));
}

关于wcf - 如何在同一个 global.asax 中托管 WCF REST 服务和 WCF 数据服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6463933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com