在 IIS 中为 mvc4 网站/应用程序设置主页(无表单编号.aspx)
本文关键字:表单 编号 aspx 主页 设置 中为 IIS mvc4 网站 应用程序 | 更新日期: 2023-09-27 18:36:47
碰巧我花了一整天来解决设置问题,现在我已经设置了 MVC4(从 WebForms 移出)和 vs2010 .
部署到IIS(7 v7.5)后,除非我指定视图的完整路径,否则我无法加载项目。 除了放置静态 HTML 或 ASPX 页面之外
如何使其重定向到 [我的第一控件]/[我的第一视图]
是不是缺少主人? 是选择网站与Web应用程序之间的问题吗?
我已经将我的 Ip 连接到域名,在固件中为 IIS 打开了端口,我想要的只是能够通过其域名进入站点/应用程序,而不必拨入控制 + 视图。那么我需要做什么呢?
顺便说一下,我正在使用基本模板,因为我想要最少的代码量根据定义,它是一个网站还是Web应用程序,作为.NET中的程序员实际上很重要,没有网站是一个网站,而是一个应用程序,因为你不只是放html,而是把业务层和数据库。但我不明白名称/术语的差异
编辑
我已经用谷歌搜索了很长时间,试图把它做好
<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
参数的值。但是,控制器类以 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 路由来了解有关它的更多信息。
我太忙了,无法注意到在对所有必需设置的问题进行故障排除后,我忘记确保将控件从索引重命名为主页的所有测试以及将视图从默认值重命名为索引或仅在我添加编辑时才以某种方式在上面的代码中。 我最后看了一眼只是为了确保, 但事实证明这是我的错误,所以我把它留给将来参考,以便其他人从这个错误中吸取教训。