簡體   English   中英

在同一個域下托管 WebApi 和 C# 站點

[英]Host WebApi and C# site under the same domain

我有一個用 C# 制作的網站( http://my.site/ ),現在我有一個 Web API 項目,我想將它合並到該域並在http://my.site/api收聽。 它們是 VS2013 中的 2 個獨立項目。

我試着上傳的Web API來/api/子文件夾中的服務器和映射MVC路線它(的WebAPI路線WebApiConfig.cs仍然routeTemplate: "api/{controller}/{id}" ),期待默認(主頁)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添加到C#項目的App_Start文件夾(並使用相應的命名空間)將解決該問題。 這似乎太簡單了,所以我懷疑它會起作用,所以我需要有人指出我正確的方向,否則我會犯下回到asmx的罪過。

如果沒有,我如何在同一域上擁有 C# 網站和 WebAPI?

您想要在服務器上的同一個 bin 文件夾中運行兩個單獨的 dll(每個都有自己的路由規則)。 這肯定會導致您網站上的路由發生一些沖突。 執行此操作的正確方法是將您的 api 項目托管在單獨的服務器上並使用子域,例如http://api.my.site/ 這樣您就可以確保您的 C# 站點 ( http://my.site/ ) 可以訪問 api ( http://api.my.site/ )。 並且您的 dll,包括路由規則,將保持獨立。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM