【问题标题】:Setting the default route for MVC site on IIS 8在 IIS 8 上设置 MVC 站点的默认路由
【发布时间】:2015-07-15 14:54:33
【问题描述】:

我已经使用 IIS8 在我们的网络服务器上设置了一个站点。 URL 是链接 ABC.mycompany.com 的东西。当我访问 ABC.mycompany.com 时,我收到一个未找到的错误:

“/”应用程序中的服务器错误。

找不到资源。

描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的网址:/

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.17929

如果我访问 ABC.mycompany.com/Home/InstrumentList,它会显示我想要开始的正确页面。如何让它从这条路线开始?

在 Visual Studio 2013 中,我将 Home/InstrumentList 设置为我的开始操作,并且效果很好。我查看了几个引用默认页面和索引页面的示例,但我的应用程序没有这些示例。此外,还有对 .aspx 页面的引用,但我的应用程序中没有 .aspx 页面,只有 .cshtml 视图和 .cs 控制器。我也看到了有关添加路由的事情,但我不确定将它们放在 global.asax.cs 中的哪个位置(在 ApplicationStart 中?在它之外?以不同的方法?只是单独?)。我也不知道要改变什么来为我工作(将索引更改为 InstrumentListing 或不理会它)。到目前为止,没有什么对我有用。

这是我使用 global.asax.cs 的尝试之一,我尝试添加一个注册路由方法:

namespace GPC
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            WebApiConfig.Register(GlobalConfiguration.Configuration);
        }

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapRoute(
            "Default",
            "{controller}/{action}/{Filtre}",
            new { controller = "Home", action = "Index", Filtre = UrlParameter.Optional });
        }
    }
}

以下是我使用过的一些网站,但对我没有任何帮助:

http://weblog.west-wind.com/posts/2013/Aug/15/IIS-Default-Documents-vs-ASPNET-MVC-Routes

cannot set Default route for MVC project

http://weblogs.asp.net/imranbaloch/editing-routes-in-mvc

如果有人能告诉我如何让 ABC.mycompany.com/Home/InstrumentList 显示用户何时访问 ABC.mycompany.com,我将不胜感激。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 iis iis-8


    【解决方案1】:

    我不确定,但你的 RegisterRoutes 方法应该在 RouteConfig 类中,默认情况下应该在 App_Start MVC 项目的 foulder 中。 这不是 MvcApplication 类中的方法,它位于 Global.asax.cs,正如我在您的问题中看到的那样。

    那么你应该只改变RegisterRoutes这样的方法来设置不同的默认控制器动作:

     public static void RegisterRoutes(RouteCollection routes)
     {
         routes.MapRoute(
         "Default",
         "{controller}/{action}/{Filtre}",
         new { controller = "Home", action = "InstrumentList", Filtre = UrlParameter.Optional });
     }
    

    【讨论】:

    • 谢谢。这完美地工作。我查看的网站要么在 global.asax.cs 中有这个,要么没有提到它的去向。几个问题,如果您不介意的话: 1. 我可以假设服务器正在尝试获取“默认”页面(default.aspx 或类似的东西)并且此代码将 Default.aspx 重新路由到 Home/仪器清单? 2. 正如我所说,我在搜索这个时发现了多个相互矛盾的答案。你能推荐一个解释这样的事情的来源吗?似乎默认路线是一件非常基本的事情,但我不知道如何在任何地方设置它。
    • 好吧,我也不知道这个问题。但我知道 MVC 路由在 IIS 默认起始页设置上工作。我只知道 iis 设置在 Web.Config 中写入了一些东西,默认页面是我 gess 的 ASP.NET WebForms 框架的一部分。它被 MVC 忽略了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多