Asp.net mvc 2 将MVC2应用程序部署到IIS7.5-Ninject要求为内容文件提供控制器

Asp.net mvc 2 将MVC2应用程序部署到IIS7.5-Ninject要求为内容文件提供控制器,asp.net-mvc-2,.net-4.0,iis-7.5,ninject-2,Asp.net Mvc 2,.net 4.0,Iis 7.5,Ninject 2,我有一个应用程序,它在VisualStudio2008SP1中以MVC(1.0)应用程序的形式开始了我的生活,作为网站的一部分,它有一系列Silverlight3项目。一点也不奇怪。使用Ninject进行依赖项注入(第一个版本2测试版,现在发布了带有MVC扩展的版本2) 随着.Net 4.0、VS2010、MVC2等的发布,我们决定将应用程序迁移到最新的平台。VS2010中的转换向导显然解决了所有问题,但有一个例外——它没有将对mvc1的引用更改为现在指向mvc2,所以我必须手动完成。当然,这让

我有一个应用程序,它在VisualStudio2008SP1中以MVC(1.0)应用程序的形式开始了我的生活,作为网站的一部分,它有一系列Silverlight3项目。一点也不奇怪。使用Ninject进行依赖项注入(第一个版本2测试版,现在发布了带有MVC扩展的版本2)

随着.Net 4.0、VS2010、MVC2等的发布,我们决定将应用程序迁移到最新的平台。VS2010中的转换向导显然解决了所有问题,但有一个例外——它没有将对mvc1的引用更改为现在指向mvc2,所以我必须手动完成。当然,这让我想到了我的应用程序中可能缺少的其他MVC2东西,如果我做了文件->新项目,这些东西就会出现。。。但这不是这个问题的重点

当我将此应用程序部署到IIS 7.5服务器(在Win2008 R2 x64上运行)时,应用程序本身就可以工作。然而,图像、脚本和其他静态内容似乎并不存在。当然,它们在服务器的磁盘上,但它们不会显示在客户端web浏览器中

我对IIS相当陌生,所以我知道的唯一诀窍就是尝试在服务器上的浏览器中打开网页,因为这样可以给我更多信息。在这里,我们终于遇到了敌人。如果我尝试直接转到其中一个图像的URL(例如),我会在浏览器中遇到以下错误:

IControllerFactory“Ninject.Web.Mvc.NinjectControllerFactory”未为名为“Content”的控制器返回控制器

啊哈。web服务器试图将此请求提供给MVC,MVC的默认路由设置假定内容是控制器,但失败

我如何才能让它将内容/和脚本/(以及其他内容)视为非控制器,只通过静态内容?这当然可以在我的开发人员机器上使用Cassini,但一旦我部署,这个问题就会出现

我使用的是Ninject MVC 2的最新版本,IoC工具应该将丢失的控制器传递给基本控制器工厂,但这显然没有帮助。我还尝试为内容添加忽略路由等,但这显然也没有效果。我甚至不确定我在正确的层面上解决了这个问题

有人知道在哪里可以运行此应用程序吗?我可以完全控制web服务器,所以只要它开始工作,我或多或少都可以做任何我想做的事情


谢谢

我在StructureMap和favorite.ico上也遇到了类似的问题,我最后做的是添加一条路径来忽略该路径

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("favicon.ico");
请记住,我真的完全不知道,但另一件改变的事情是需要Default.aspx,如果您有任何需要映射的自定义页面,也需要使用Default.aspx。这是我唯一遇到的两个路由问题

        routes.RouteExistingFiles = false;

编辑:我的意思是RouteExistingFiles应该为false,否则我在MVC2中会出现异常:)

我在StructureMap和favorite.ico上遇到了类似的问题。我最后做的是添加一个路由以忽略该路径

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("favicon.ico");
请记住,我真的完全不知道,但另一件改变的事情是需要Default.aspx,如果您有任何需要映射的自定义页面,也需要使用Default.aspx。这是我唯一遇到的两个路由问题

        routes.RouteExistingFiles = false;

编辑:我的意思是RouteExistingFiles应该为false,否则我在MVC2中会出现异常:)

结果表明这是由某些帐户设置引起的-我不知道IIS在Win2008 R2服务器中自动创建IIS AppPool\sitename帐户。在尝试了“一切”之后,我发现了这些信息,赋予了适当的权利,然后这些东西神奇地开始工作


调试非常困难,特别是对于IIS经验非常有限的人(我)。

结果表明这是由某些帐户设置造成的-我不知道IIS在Win2008 R2服务器中自动创建IIS AppPool\sitename帐户。在尝试了“一切”之后,我发现了这些信息,赋予了适当的权利,然后这些东西神奇地开始工作


调试起来非常困难,尤其是对于那些IIS经验非常有限的人(我)。

谢谢您的回复。我对此进行了调查,不幸的是,它没有起作用。我正在用干草叉寻找这个,以后再找。我投票支持这个,因为它可能有助于解决除我之外的其他问题!为favicon添加ignoreroute是我想要的,干杯:)谢谢您的回复。我对此进行了调查,不幸的是,它没有起作用。我正在用干草叉寻找这个,以后再找。我投票支持这个,因为它可能有助于解决除我之外的其他问题!为favicon添加ignoreroute是我想要的,干杯:)正确的权利是什么?只是授予运行应用程序池的帐户读取权限?正确的权限是什么?正在为运行应用程序池的帐户授予读取权限?