Asp.net mvc 4 在IIS应用程序中托管MVC4应用程序

Asp.net mvc 4 在IIS应用程序中托管MVC4应用程序,asp.net-mvc-4,iis-7.5,asp.net-routing,Asp.net Mvc 4,Iis 7.5,Asp.net Routing,我有几个应用程序部署到IIS。我为每个应用程序创建了一个站点,并使用不同的端口号映射它们。最近,我被要求使用虚拟目录,而不是使用不同的端口号映射它们。我创建了虚拟目录并为其添加了一个路由。当我尝试在本地测试应用程序时,我得到了403.14。在线阅读了几篇文章后,我对web.config文件做了以下更改 <modules> <remove name="UrlRoutingModule-4.0"/> <add name="UrlRouting

我有几个应用程序部署到IIS。我为每个应用程序创建了一个站点,并使用不同的端口号映射它们。最近,我被要求使用虚拟目录,而不是使用不同的端口号映射它们。我创建了虚拟目录并为其添加了一个路由。当我尝试在本地测试应用程序时,我得到了403.14。在线阅读了几篇文章后,我对web.config文件做了以下更改

  <modules>
      <remove name="UrlRoutingModule-4.0"/>
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule, 
        System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
          preCondition="" />
    </modules>
在做了这些改变之后,我再也得不到400.13了;但是,我没有得到登录页面。我正在得到所有文件的目录。我运行命令“aspnet\u regiis/I”,然后运行aspnet\u regiis-ir,以确保这不是注册问题。到目前为止我一点运气都没有。我正在寻找任何有助于解决此问题的信息或资源

本地系统: 视窗7 IIS 7.5 Visual Studio 2017 Asp.NETMVC4 Jquery 2.3

更新2018年3月7日9时45分

我修改了路线,如下所示。我不再得到目录列表了。但是,POST和GET没有路由到适当的控制器。 页面首次加载时的url如下所示:

http://localhost/CollegeOfBusiness
我在下面添加了自定义路线。它添加在默认路线的正上方。

RouteConfig.cs file to 
        routes.MapRoute(
            name: "CollegeOfBusiness",
            url: "CollegeOfBusiness/{controller}/{action}/{id}",
            defaults: 
             new { controller = "Account", action = "Logon", id = UrlParameter.Optional},
             namespaces: new[] { "MyCollege.Controllers" }
        );
然后,我在底部添加默认路线

RouteConfig.cs file to 
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: 
     new { controller = "Account", action = "Logon", id = UrlParameter.Optional},
     namespaces: new[] { "MyCollege.Controllers" }
);
当用户单击“登录”按钮时,post URL如下所示:

/CollegeOfBusiness/Account/Logon

最后,我终于能够让它工作了。 1.我删除了下面的自定义路由,因为它不需要

RouteConfig.cs file to 
        routes.MapRoute(
            name: "CollegeOfBusiness",
            url: "{controller}/{action}/{id}",
            defaults: 
             new { controller = "Account", action = "Logon", id = UrlParameter.Optional},
             namespaces: new[] { "MyCollege.Controllers" }
        );
  • 正如本文所建议的,我将url添加到一个div中,并根据Id获取它。我还将所有js和css文件的src更改为使用@url.Action()

  • 我必须在所有请求前预先准备“/CollegeOfBusiness”

  • 我将应用程序池更改为使用服务帐户。这个帐户没有更新数据库的权限,所以我也修复了这个问题


  • 尝试将虚拟目录转换为子应用程序。右键单击IIS管理器中的虚拟目录,然后单击“转换为应用程序”。该虚拟目录已作为应用程序添加。右键单击IIS管理器中的虚拟目录时,是否看到“转换为应用程序”选项?右键单击默认站点并单击“添加应用程序”。是否尝试过是否从默认路由中删除CollegeOfBusiness?我假设CollegeOfBusiness是您的子应用程序名称
    RouteConfig.cs file to 
            routes.MapRoute(
                name: "CollegeOfBusiness",
                url: "{controller}/{action}/{id}",
                defaults: 
                 new { controller = "Account", action = "Logon", id = UrlParameter.Optional},
                 namespaces: new[] { "MyCollege.Controllers" }
            );