[英]c# WebApi: HTTP 200 on local host but 400/401 on remote host with same user
[英]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.