获取请求在IIS上返回404但在本地工作

时间:2017-11-01 16:59:06

标签: c# angularjs asp.net-mvc iis iis-6

我在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: 我在服务器上也尝试了以下更改,但没有运气。

https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/deployment/using-asp-net-mvc-with-different-versions-of-iis-cs

这是我在此次更改后的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 = "" }
              );
        } 

1 个答案:

答案 0 :(得分:0)

将您的MVC应用程序放在apsecureeditor / webapp文件夹中不会改变应用程序中页面的路径,因为您使用项目的路由集来调用控制器的操作,而不是本地文件/视图的位置(服务器) ) 硬盘。尝试完全按照本地项目加载URL,即完全从URL中删除apsecureeditor / webapp。