我在IIS 6.0服务器上托管我的MVC应用程序(Angular Js + MVC 4)。
我的路线配置如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
下面的是控制器代码:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public JsonResult GetAppSettings()
{
try
{
string useAdvancedSearch = ConfigurationSettings.AppSettings["UseAdvancedSearch"];
return Json(new { userAdvancedSearch = Boolean.Parse(useAdvancedSearch) }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { message = ex.ToString() }, JsonRequestBehavior.AllowGet);
}
}
}
我在角度js控制器中的Ajax调用如下:
var ConfigService =
function (configConstants, $http, $q) {
this.getAppSettings = function () {
var d = $q.defer();
var get = $http({
method: "GET",
url: "Home/GetAppSettings",
dataType: 'json',
headers: { "Content-Type": "application/json" }
});
get.then(function (response) {
d.resolve(response.data);
console.log(response.data);
}, function (err) {
console.error(JSON.stringify(err));
d.reject(err);
});
return d.promise;
};
};
此调用在本地IIS Express中提供了正确的数据,但是当我在IIS上运行相同的操作时,我收到404错误。
无法加载资源:服务器响应状态为404 (未找到)
我在本地主机中的网址是:http://localhost:63555/Home/GetAppSettings
IIS服务器网址为:http://******/apsecureeditor/WebApp/Home/GetAppSettings
该项目位于服务器上的 apsecureeditor / webapp 文件夹中。
我在IIS服务器上执行此操作时收到404错误。
我的框架是MVC 4,.net 4.0,IIS的版本是6.0。
这里有什么我想要包括的内容吗?
编辑1: 我在服务器上也尝试了以下更改,但没有运气。
这是我在此次更改后的routeconfig。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "Index", id = "" }
);
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { action = "Index", id = "" }
);
}
答案 0 :(得分:0)
将您的MVC应用程序放在apsecureeditor / webapp文件夹中不会改变应用程序中页面的路径,因为您使用项目的路由集来调用控制器的操作,而不是本地文件/视图的位置(服务器) ) 硬盘。尝试完全按照本地项目加载URL,即完全从URL中删除apsecureeditor / webapp。