请求的URL没有配置默认文档,并且服务器未启用目录浏览。

57

我刚刚将我的asp.net mvc-2网站部署到服务器上(使用dotnetpanel)。但是出现了这个错误

A default document is not configured for the requested URL, and directory browsing is not enabled on the server.

我需要哪些设置?这是基于DotNetPanel的托管服务器。


2
添加 index.html 文件解决了我的问题。 - AminFarajzadeh
如果在开发期间从Visual Studio运行应用程序时出现问题,该怎么办?如何解决?我正在运行ASP.NET MVC应用程序。 - Deepak
12个回答

40

你的主机运行的是哪个版本的IIS?一个尝试的方法是在根文件夹中放置一个虚拟的default.aspx文件(当MVC工作时不会使用它,但可以解决这个问题)。


7
添加 default.aspx 页面解决了我的问题。 - Kandarp Vyas
1
将 Default.aspx 添加重定向到 login.aspx 解决了我的问题。 - devHead
9
为什么MVC应用程序中会有.aspx文件?你应该使用视图而不是WebForms文件,这不是正解,而是一种hack。 - Rob King
3
@RobKing,我从未说过这不是一种黑客行为,但 asp.net MVC 的某些部分本身就依赖于黑客技巧。 - UpTheCreek
1
@RobKing 是的,我看到了你的回答。 - UpTheCreek
显示剩余2条评论

38

所标记的答案将帮助您消除错误,但不能使MVC工作。解决问题的答案是在web.config文件的system.webServer部分中添加此行:

<modules runAllManagedModulesForAllRequests="true" />

3
这个方法解决了我在安装有.NET 4.5而非4.5.1的服务器上,针对使用IIS 7.5的MVC 5 WebAPI2网站遇到的问题。 - Christopher G. Lewis
1
谢谢!这解决了在SBS上使用IIS7 ASP.Net MVC 5的问题。 - Alin I
1
这确实应该被接受为答案。在将MVC4发布到Azure之后,我一直收到“您没有权限查看此目录或页面”错误。我陷入了困境三天,但这解决了问题。谢谢! - Moses Machua
2
ASP.NET Core 3+怎么样? - Marc Roussel
1
@RobKing,我在使用 .net core 时遇到了这个问题。你有什么想法吗? - Nathan
显示剩余3条评论

20

以下适用于 IIS 7:

这个错误想要告诉你的是有两种情况可能没有正常工作:

  • 你的站点没有默认页面(例如 index.html、default.aspx)。这可能意味着“默认文档”功能完全被禁用或者配置错误。
  • 目录浏览未启用。也就是说,如果你没有为你的站点提供默认页面,可能希望允许用户通过 HTTP 导航到你的站点目录内容(如远程“Windows资源管理器”)。

请参阅下面的链接以获取如何诊断和解决上述问题的说明。

http://support.microsoft.com/kb/942062/en-us

如果以上两个问题都不是问题,另一个要检查的事情是确保为你的网站配置的应用程序池(在 IIS 管理器中选择你的网站,然后在最右边点击“基本设置”)与你的 web.config 中配置的 targetFramework 相同的 .Net Framework 版本(在 IIS 管理器中,“应用程序池”下方)。

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime targetFramework="4.0" />
  </system.web>

我不确定为什么这会引起一个看似无关的错误消息,但对我来说确实是这样。


1
确保.NET版本匹配解决了我的问题。谢谢! - CodeLander

15

在尝试使用IIS Express服务器调试ASP.NET网站时,我遇到了与OP发布的相同的错误。IIS Express是Visual Studio使用的轻量级Web服务器,用于在按下F5来调试网站代码时运行网站。

如何修复?

在Visual Studio(VS)中打开项目解决方案>展开解决方案资源管理器>展开Web应用程序项目节点(在我的案例中是StudentInfo>右键单击要在网站开始加载时加载的网页(在我的案例中是StudentPortal.aspx>从上下文菜单中选择Set as Start Page选项,如下所示:

输入图像描述

根本原因: 我得出结论,网站的默认文档——起始页没有正确设置,或者在开发过程中某种方式被弄乱了。


1
这对我来说是最好的解决方案,我的设置不正确。 - jhhoff02
嗨,我正在做与我的.NET Core应用程序相同的事情,我正在运行它在IIS上。我也设置了启动项目,但没有解决我的问题。请给出任何其他建议,因为我已经在这上面浪费了很多时间。我正在使用.NET Core 3.1。 - Rinku Choudhary

2
你在这个类中添加了默认路由吗?
public class RouteConfig {
    public static void RegisterRoutes (RouteCollection routes) {`
        //"HomePage" is the root view of your app
        routes.MapRoute (
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new {
                controller = "Home", action = "HomePage", id = UrlParameter.Optional
            }
        );
    }
}

在Global.asax.cs中的Application_Start()方法中添加以下行:
RouteConfig.RegisterRoutes (RouteTable.Routes);

在我按照this文章的步骤,从MVC4升级到MVC5后,我遇到了这个问题。我曾经把那一行注释掉,但现在忘记了原因。

希望这能帮到你!


1
这也可能发生在你做了一些愚蠢的事情(就像我那样),将API URL放置在“项目网址”中(例如http://localhost:59088/api/Product),而不是在“指定页面”文本框中。这会导致Visual Studio继续创建一个名为ProjectName/api/Product的应用程序,并期望有一个默认页面。撤销此操作的唯一方法是转到C:\Program Files (x86)\IIS Express并使用appcmd.exe进行删除。
>.\appcmd.exe delete APP "ProjectName/api/Product"

1
我知道现在回答已经太晚了,但我发现完全不同的情况。我尝试了上面给出的所有可能的解决方案,但对我来说都没有用。 我在我的情况下发现了非常愚蠢的错误/忽略 我仔细检查了IIS管理器窗口,并发现ASP.NET部分在那里缺失。 我已经为ASP.NET打开了Windows功能,以下是步骤

  1. 打开控制面板
  2. 程序\打开或关闭Windows功能互联网
  3. 信息服务万维网服务应用程序开发
  4. 检查 - >特性ASP.Net

我关闭了IIS管理器窗口并重新打开它,现在ASP.NET部分可见。 enter image description here

只需浏览托管的网站,它就会在浏览器中运行。


0
可能的罪魁祸首是 Global.asax 在 MVC 项目内放置在错误的目录。在我的情况下,它被放置在 /Views 下,但实际上应该放置在项目的根目录下。
在你的情况下,可能完全相反 - 运行一些测试并自行查看。

https://dev59.com/EmEh5IYBdhLWcg3wlEVq#41467885


0
在我的情况下,我必须安装Microsoft.Owin.Host.SystemWeb包。
我收到了与您相同的消息,但后来注意到我甚至无法在Startup.cs中触发断点,这让我想到了this SO thread

0

我在WebForms应用程序中遇到了这个问题,错误明确指出未配置默认文档,在我的情况下是真的,因为默认文档没有配置。对我有用的是,我点击了我的站点,在iis的中间窗格中有一个名为默认文档的选项。在默认文档中,您必须检查应用程序的默认页面是否存在。

我的应用程序的默认页面是index.aspx,但它不在iis的默认文档窗口中。所以我新建了一个index.aspx的条目,然后它就开始工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接