使用Visual Studio 2012:
- 我创建了一个"ASP.NET空Web应用程序"(使用C#(
- 我使用NuGet安装了
FubuMVC
软件包 - 当我运行应用程序(使用IISExpress(时,我会得到"欢迎使用FubuMVC!"页面,该页面告诉我删除
FubuMVC.GettingStarted.dll
文件并设置主页 - 所以我做了这两件事,实现了一个
HomeController
,它只是从Index
返回"Hello World"
我得到的不是预期的"Hello World",而是IIS错误:The Web server is configured to not list the contents of this directory.
我做错了什么?
试试这个cmd=>不要忘记以管理员身份运行
%windir%\Microsoft.NET\Framework64\v4.0.30119\aspnet_regiis.exe-ir
刚刚尝试用一个全新的项目重现您的问题;事实证明,问题是示例中的指令没有跟上FubuMVC中的变化。
指令告诉你创建一个名为"MyHomeController"的类,并向其中添加Index((方法。这在过去很有效,因为路由的默认规则之一是使用任何名称以"Controller"结尾的类。
但在最近的版本中,默认值已经更改,该规则现在查找以"EndPoint"结尾的类。
因此,如果您将类的名称从"MyHomeController"更改为"MyHomeEndpoint",它应该可以工作。
此外,请记住,应用程序池需要重新启动才能使新配置生效,因此您可能必须触摸web.config(或强制IISExpress重新启动(。
您在Global.asax中激活了FubuMVC吗?当没有FubuMVC应用程序时,我通常会看到这个错误。
因此,在Application_Start(((或它真正的名称(中,您需要类似以下内容:
FubuApplication.DefaultPolicies((.StructureMap(new Container(((.Bootstrap((;
你告诉它的地方:1.(使用哪些政策/惯例2.(你的IoC容器是什么
通常,如果我遇到这种情况,那是因为我与项目中的路由和文件夹发生了冲突。例如,我可能有一个名为"Unit"的文件夹,其中有一个名称为"UnitEndpoint"的类,方法为"get_Unit"(假设我使用的是FubuMVC默认值,它应该映射到"/Unit"作为路由(。
在这种情况下,浏览到"/unit"将导致此错误,因为IIS认为我正在尝试列出"unit"文件夹的内容。重命名端点或文件夹以删除冲突将解决此问题(例如,将"Unit"文件夹重命名为"Units"(。
我建议你重新编译你的应用程序,或者至少触摸你的global.asax——看起来你需要重新运行App_Start方法。