ASP.NET MVC和IIS 5

什么是托pipe一个ASP.NET MVC应用程序在IIS 5(6或7)上工作的最佳方式。 当我试图发布我的ASP.NET MVC应用程序,我似乎得到的是404错误。 我已经做了一些googleing,并find了一些解决scheme,但都没有看起来超级优雅,我担心,如果他们将无法使用,一旦我来使用共享主机环境的应用程序。

解决scheme1

  1. 右键单击inetmgr.exe上的应用程序虚拟目录。
  2. 属性 – >虚拟目录选项卡 – >configuration。
  3. 添加一个新的映射扩展。 扩展名应该是。*,它将被映射到可执行文件C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll或计算机上的相应位置(您可以简单地从映射.aspx文件)。 在映射上,取消勾选“检查该文件是否存在”。
  4. 3 X好,你很好走。
  5. 如果你愿意,你可以将这个设置应用到你的所有网站。 在步骤1中,点击“默认网站”节点,而不是您自己的虚拟目录,并在第2步转到“主目录”选项卡。 其余的是一样的。

通过ASP.NET路由所有的东西似乎是一件有趣的事情。

解决scheme2

编辑MVC路由以在URL中包含.mvc,然后执行基于此扩展的解决scheme1中的步骤。 编辑:原始图像链接丢失,但这里是从谷歌的caching:

替代文字

答案就在这里

如果* .mvc扩展名没有注册到主机,它会给404exception。 在这种情况下托pipeMVC应用程序的工作方式是通过以下方式修改global.asax路由caluse。

route.Add(new Route(“{controller} .mvc.aspx / {action}”,new MvcRouteHandler()){Defaults = new RouteValueDictionary(new {controller =“YourController”})});

通过这种方式,所有的控制器请求都将以* .mvc.aspx结尾,并由您的主机识别。 而且当MVC dll被复制到你的本地文件夹中时,不需要做特别的设置。

我想无论你需要做什么解决scheme1

考虑HTTP请求pipe道。

  1. 一个请求进入IIS。
  2. IIS检查端口/主机头,看它是否有一个网站设置为捕获该主机头/端口的请求。
  3. IIS调查请求的文件扩展名(.php,.asp,.aspx),并将其传递给可以处理该请求types的ISAPI。

只有在这个时候,ASP.NET(或者PHP运行时)才会启动。如果IIS没有这个映射,那么它就不会把请求交给ASP.NET运行时,并且请求永远不会到达你的代码。 这就是为什么你需要将这个glob(*)映射到ASP.NET ISAPI。

ASP.NET MVC框架url往往没有文件扩展名。 如果你希望这些请求被ASP.NET(或者其他一些运行时)处理,你必须将所有的请求都映射到那个ISAPI(即aspnet_isapi.dll)上。

HttpHandlers通常也需要像.jpg,.gif这样的媒体提供服务。 即使.jpg不是一个“普通”的ASP.NET文件扩展名,为了处理器被击中,它需要被映射到你的代码。

HTH,
泰勒

运行:C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll -i

这将重置aspnet用户的IISregistry设置。

创build虚拟目录:1.右键点击要转换的目录

  • select属性
    1. 在目录下,select创build。
    2. 在configuration下,select添加。
    3. 对于可执行插入:

C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ ASPNET_ISAPI.DLL

用于扩展插入:。*

  • 取消选中“检查该文件是否存在”

  • 在Documents下添join口点文件,即:Default.htm,index.htm,Global.asax

  • 在目录设置下

    1. select编辑…
    2. select匿名访问
    3. 取消选中允许IIS来控制密码
    4. 取消选中基本身份validation
    5. 取消选中集成Windows身份validation
    6. 在ASP.NET下,确保版本= v4.0.30319

记下用户名,例如:IUSR_AVSJ82S

设置物理目录的共享权限:

  • 在Windows资源pipe理器中,转到已转换为虚拟目录的物理目录。 右键点击目录名称
  • select属性
  • 在安全选项卡下,select添加
  • inputIIS用户名即:IUSR_AVSJ82S点击检查名称。
  • 单击确定
  • 设置读写权限。

仅供参考:在服务器2003(开发一个必须连接到RPS的应用程序),它不允许我添加扩展。*,我用备用解决scheme修改路由子句,并且工作。

您是否尝试将.aspx添加到控制器名称的末尾?

它适用于堆栈溢出问题我在哪里可以得到ASP.NET MVC托pipe?

如果你仍然感兴趣,我写了一篇文章, IIS与ASP.NET URL重写 。

它不是优雅的,但它只是一个解决scheme。 我用它, 它的工作原理 。