在 IIS 中为 mvc4 网站/应用程序设置主页(无表单 no.aspx)

setting homepage in IIS for mvc4 website /application (no forms no.aspx)

碰巧我花了一整天的时间来解决设置问题,现在我设置了 mvc4(从 WebForms 移出)和 vs2010。

部署到 IIS(7 v7.5) 后,我无法加载项目,除非我指定视图的完整路径。除了放置静态 html 或 aspx 页面

如何让它重定向到 [MyFirstControl]/[MyFirstView]

是缺师父吗?是选择 Website 还是 WebApplication 之间的问题?

我已经将我的 Ip 连接到一个域名,在 FW 中为 iis 打开了端口,我想要的只是能够通过其域名进入站点/应用程序,而不必拨入 control + view 。 那我需要做什么?

顺便说一下,我使用的是基本模板,因为我希望代码量最少 根据定义,它是一个网站还是网络应用程序,作为 .NET 中的程序员,它实际上很重要没有网站是一个网站,而是一个应用程序,因为你永远不会把 html 而是一个业务层和 db.. 但我不不理解名称/术语的差异

编辑

我在谷歌上搜索了很长时间,试图把它弄对

 <modules>
      <remove name="UrlRoutingModule-4.0" />
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>


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 }
        );
 }

您只注册了一个路由(在新 MVC 项目中创建的默认路由):

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

当 URL 中没有操作或控制器时,defaults 参数提供默认值。因此,当您导航到根 (/) 时,Index 操作将在 HomeController.

上执行

显然,您希望根 (/) 指向 MyFirstControl 控制器上的 MyFirstView 操作,因此原则上您只需更改 defaults 参数。但是,您的控制器 class 以 Control 结尾,但 MVC 期望它以 Controller 结尾,因此您必须将控制器 class 重命名为 MyFirstController 然后配置它默认路线:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "MyFirst", action = "MyFirstView", id = UrlParameter.Optional }
);

此外,在动作名称中使用 View 有点令人困惑。

ASP.NET 中的路由是一个非常重要的概念,您可以通过阅读文章 ASP.NET Routing 了解更多信息。

我太忙了,没有注意到在解决所有必需设置的问题后,我忘了确保我重置了所有测试,将控件从索引重命名为 home,并将视图从默认重命名为索引等等上面的代码只有当我添加编辑时。我最后看了一眼只是为了确定,但事实证明这是我的错误,所以我把它留作以后参考,以便其他人从这个错误中吸取教训。