我有一个使用System.ServiceModel.ServiceHost的现有自托管REST服务(请参阅本页底部的示例:https://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost.aspx )Owin自托管服务映射.svc到web api路由(忽略url中的.svc)
我有一个类似于这个httpX:// MyServer:80/SubFolder/Service.svc的地址。历史上,当我们过去使用SOAP和REST端点时,Svc的终点就在那里。但现在它只被访问REST端点的客户端使用。我需要保持Url不变以支持现有客户端
我想将其切换到Owin自托管网站。但我不知道如何使路由处理URL的.svc部分,并基本上忽略它。
例如这个工程 httpX:// MyServer的:80 /子文件夹/服务/ GetTest
这不 httpX:// MyServer的:80 /子文件夹/ Service.svc/GetTest
我一直在寻找网址重新编写选项并找到这些选项,但它们似乎没有解决我的问题。 https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
(对不起 - 我不能发表什么,我看了一下,由于计算器限制更多的例子)
我的启动是这样
var server = WebApp.Start<Startup>("httpX://MyServer:80/SubFolder/Service.svc");
和我的路由看起来像这样
appBuilder.Map("/api", api =>
{
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
api.UseWebApi(config);
});
使用此设置,如果我浏览到 httpX:// MyServer:80/SubFolder/Service.svc/api/Test I g et a 503.
如果我修改为这样,并从浏览器中的地址中删除.svc它的作品。
var server = WebApp.Start<Startup>("httpX://MyServer:80/SubFolder/Service");