C# 当应用程序作为默认网站下的Web应用程序发布到IIS时,URI到Web API操作不起作用
我已经将WebAPI2添加到现有的MVC5 Web应用程序中。我使用这个WebAPI的方法将JSON数据返回到MVC视图 这是视图中ajax调用的一个示例:C# 当应用程序作为默认网站下的Web应用程序发布到IIS时,URI到Web API操作不起作用,c#,asp.net-mvc,asp.net-mvc-5,routing,asp.net-web-api2,C#,Asp.net Mvc,Asp.net Mvc 5,Routing,Asp.net Web Api2,我已经将WebAPI2添加到现有的MVC5 Web应用程序中。我使用这个WebAPI的方法将JSON数据返回到MVC视图 这是视图中ajax调用的一个示例: $.getJSON('@Url.RouteUrl("DefaultApi" , new { httproute = true, controller = "Data", action = "GetMyData" })' , function (data) { ... do sth with returned
$.getJSON('@Url.RouteUrl("DefaultApi"
, new { httproute = true, controller = "Data", action = "GetMyData" })'
, function (data) {
... do sth with returned json data here ...
});
这是在客户端上生成的代码:
$.getJSON("/api/Data/GetMyData", function (data) { ...
这就是WebApiConfig.cs文件的外观:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
当我从VisualStudio调试时,一切都很好。但是,当我将应用程序作为“默认网站”下的应用程序部署到IIS时,指向Web API操作方法的所有链接都会断开
换句话说,$.getJSON(“/api/Data/GetMyData”),当我从Visual Studio启动调试会话时,函数(Data){…
工作正常,但当应用部署到IIS时返回404错误
我打字的时候
http://localhost/myAppVirtualPath/api/data/GetMyData
直接在浏览器的地址行中,我得到了预期的结果
应用程序的虚拟路径似乎需要添加到URI中的“/api”之前未能做到这一点。我这里是否缺少一些明显的东西?我想是的,但可能是什么?是否在IIS中将
myAppVirtualPath
配置为应用程序?@CyrilDurand是的,我通过右键单击默认网站添加了它,然后选择了“添加应用程序”…是否使用“Url.Action”(“GetMyData”,“Data”)对其进行了测试“相同的结果?是否在IIS中将myAppVirtualPath配置为应用程序?@CyrilDurand是的,我通过右键单击默认网站添加了它,然后选择了“添加应用程序…”是否使用“Url.Action”(“GetMyData”,“Data”)”对其进行了测试,结果相同?