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

时间:2016-02-28 20:44:55

标签: c# asp.net asp.net-mvc-4 iis start-page

因为碰巧我有一整天解决设置问题,现在我设置了mvc4(从WebForms移动)和vs2010。

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

如何才能将其重定向到[MyFirstControl] / [MyFirstView]

是否缺少高手?这是选择网站与WebApplication之间的问题吗?

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

顺便说一句,我使用基本模板,因为我想要最少量的代码 它是一个网站的定义或网络应用程序它真的重要作为.NET程序员没有网站是一个网站,但一个应用程序,因为你从来只是把html而不是业务层和数据库...但我不明白姓名/条款的差异

修改

我已经用Google搜索了很长时间才能正确使用

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

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

答案 1 :(得分:0)

我太忙了,没有注意到在解决了所有必需设置的问题之后,我忘了确保我重置所有测试,将控件从索引重命名为home,我的视图从默认设置为索引,或者某种方式在代码中上面只有我添加编辑。我做了最后一次只是为了确定,但它变成了我的错误所以我留下它以备将来参考,以便其他人从这个错误中吸取教训。