一个通用的帖子,不幸的是,互联网信息系统会产生大量的配置问题。这很可能是它最大的陷阱。当您在部署服务器、本地服务器或生产服务器上启动它时,结果可能永远不会相同。
我将使用互联网信息系统六,因为它类似于七和八,只是缺少某些功能。
在您的ASP.NET MVC Web 应用程序项目中,您需要右键单击您的项目并选择Properties。
您应该会看到一个指示单词的选项卡:*Web**
- 在此选项卡的底部,您需要确保选中使用 IIS Web 服务器。
- 您需要在其中放置一个项目 URL。
该字段应如下所示:*http://localhost/ApplicationName*
. 您在这里所做的基本上是为 IIS 映射您的项目目录。您会看到每个 IIS 站点都在以下位置存储了一个站点:
C:\inetpub\wwwroot
那是您的根站点文件夹,IIS 将在其中引用您的所有站点组件。** 请记住,项目中的这个虚拟目录实际上与列出的 IIS 配置项不同。**
现在您要打开 Internet 信息系统,您要设置文件扩展名。因此,在 IIS 中执行任何操作之前,您需要配置ASP.NET MVC Installer。您需要将 .mvc 扩展名的映射 (ISAPI) 配置为aspnet_isapi.dll
. 为了让 IIS 将使用 .mvc 扩展名的路由请求传递给 ASP.NET,此步骤是必需的。
从一篇很好的博客文章中,他说:
如果您打算使用无扩展名 URL,则可以跳过本节,但无论如何阅读它可能会很有用,因为它包含一些您在设置无扩展名 URL 时需要了解的信息。将 .mvc 映射到 ASP.NET
如果您计划使用 .mvc URL 扩展,并且要在未安装 ASP.NET MVC 的计算机上部署到 IIS 6,则需要通过执行以下步骤来创建此映射。
使用 .aspx 扩展名而不是 .mvc 的一个好处是您不必担心映射 .aspx 扩展名。假设您在机器上正确安装了 ASP.NET,它应该已经被映射。
对于其他人,首先右键单击虚拟应用程序节点(在本例中为 IIS6DemoWeb)并选择属性。您应该看到以下对话框。
确保您在虚拟目录选项卡中并选择配置。这将允许更改根网站。这应该会打开您的应用程序配置对话框。这将允许您物理映射您的应用程序。由于您使用.mvc
的是您将选择的内容。
如果.mvc
未在列表中找到,您可以在此处指向数据链接库:
c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
现在,在您运行应用程序之前,您需要更新默认路由,以便它们查找正确的文件扩展名。在你的Global.asax.cs
你会想要确保你使用的.mvc
扩展。
您将实现一个方法,例如:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}.mvc/{action}/{id}",
new { action = "Index", id = "" }
);
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "Index", id = "" }
);
}
这应该允许网站正确显示。这是一个非常非常通用和广泛的例子。但希望这能为您指明一个好的方向。
更新:
在使用互联网信息系统七时,您必须注意以下事项:
这三个项目是错误配置的常见罪魁祸首。
一个非常棒的博客可以在这里找到:另一篇不错的文章可以在这里找到:
但是,这篇文章应该直击你的头:
正如我所说,上述细节应该可以解决您的问题。但是,随着 IIS 7 的引入,它们有两种完全不同的方法来允许请求:集成和经典。
主要区别在于集成将表现更好并包含更多功能。Classic是为向后兼容而设计的。您的路由请求处理方法由您的Application Pool确定。配置不正确;它行不通。
- 启动 Internet 信息服务管理器
- 在 Connections 窗口中,选择一个应用程序
- 在“操作”窗口中,单击“基本设置”链接以打开“编辑应用程序”对话框
- 记下所选的应用程序池。
默认情况下,IIS 配置为支持两个应用程序池:DefaultAppPool 和 Classic .NET AppPool。如果选择了 DefaultAppPool,那么您的应用程序将在集成请求处理模式下运行。如果选择 Classic .NET AppPool,则您的应用程序将以经典请求处理模式运行。
在该框中,您将能够在“编辑应用程序对话框”中修改处理模式。
希望这些附加信息能更好地帮助您实现目标。前两个博客是避免 IIS,第三个专门关注 IIS 7。如果您有任何问题,请告诉我。