【发布时间】:2017-01-30 19:03:47
【问题描述】:
我有一个用 C# (http://my.site/) 制作的网站,现在我有一个 Web API 项目,我想合并到该域并在 http://my.site/api 上收听。它们是 VS2013 中的 2 个独立项目。
我尝试将 Web API 上传到服务器中的 /api/ 子文件夹,并将 MVC 路由映射到它(WebApiConfig.cs 中的 WebApi 路由仍然是 routeTemplate: "api/{controller}/{id}"),期待默认的 (Home) MVC控制器回复/api/。 MVC 路由(在 WebAPI 的 MVC 路由中):
routes.MapRoute(
name: "Default",
url: "{controller}", //Also api/{controller}
defaults: new { controller = "Home", action = "Get", id = UrlParameter.Optional }
);
但我在访问 http://my.site/api/ / http://my.site/api/home 等时收到“服务器错误 404”。我不明白这个错误的性质(很可能是 C# 网站根文件夹中的设置),但有人会认为 IIS将在 /api/ 文件夹中提供默认应用。
所以我想知道是否将 WebApiConfig.Register(GlobalConfiguration.Configuration); 添加到 Global.asax (Application_Start()) 并将 WebApiConfig.cs 添加到 App_Start C# 项目的文件夹(并使用相应的命名空间)将解决该问题。这似乎太简单了,所以我怀疑它会起作用,所以我需要有人指出我正确的方向,否则我将犯下回到 asmx 的罪行。
如果没有,我如何在同一个域上拥有 C# 网站和 WebAPI?
【问题讨论】:
-
您是否希望 WebSiteA 能够监听并响应对 WebSiteB 的请求?
-
我有一个 WebForms (C#) 网站,我想添加我创建的 WebAPI。
-
为什么不把你的逻辑放在一个共享的 dll 中,并将 web api 库添加到你现有的 web 表单项目中,并根据需要在其中创建调用库的 web api 控制器实例。这样,如果您需要,您仍然可以将其重新部署为独立的解决方案,但您可以直接在同一个项目中托管您的控制器。我们目前这样做是因为我们希望在我们的一个遗留项目中使用 web api 控制器,完全没有问题。
标签: c# asp.net-mvc asp.net-web-api iis-express