ASP.NET MVC和IIS 5
什么是托pipe一个ASP.NET MVC应用程序在IIS 5(6或7)上工作的最佳方式。 当我试图发布我的ASP.NET MVC应用程序,我似乎得到的是404错误。 我已经做了一些googleing,并find了一些解决scheme,但都没有看起来超级优雅,我担心,如果他们将无法使用,一旦我来使用共享主机环境的应用程序。
解决scheme1
- 右键单击inetmgr.exe上的应用程序虚拟目录。
- 属性 – >虚拟目录选项卡 – >configuration。
- 添加一个新的映射扩展。 扩展名应该是。*,它将被映射到可执行文件C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll或计算机上的相应位置(您可以简单地从映射.aspx文件)。 在映射上,取消勾选“检查该文件是否存在”。
- 3 X好,你很好走。
- 如果你愿意,你可以将这个设置应用到你的所有网站。 在步骤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道。
- 一个请求进入IIS。
- IIS检查端口/主机头,看它是否有一个网站设置为捕获该主机头/端口的请求。
- 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属性
- 在目录下,select创build。
- 在configuration下,select添加。
- 对于可执行插入:
C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ ASPNET_ISAPI.DLL
用于扩展插入:。*
-
取消选中“检查该文件是否存在”
-
在Documents下添join口点文件,即:Default.htm,index.htm,Global.asax
-
在目录设置下
- select编辑…
- select匿名访问
- 取消选中允许IIS来控制密码
- 取消选中基本身份validation
- 取消选中集成Windows身份validation
- 在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。 我用它, 它的工作原理 。