0

好的,作为一家公司,我们在 Web 服务器上部署了我们的第一个 MVC3 应用程序。已设置为处理 .NET

该服务器使用 Windows Server 2008 和 IIS 7。

但是,当我们将浏览器指向该 URL 时,我们会收到此错误。

目录列表被拒绝 此虚拟目录不允许列出内容。

当我们将其指向已知路径时,例如:

http://websitename/subfolder/subfolder/Views

我们得到同样的错误。显然当 ww 尝试直接进入 Razor 页面时,例如:

http://websitename/subfolder/subfolder/Views/Pages/Index.cshtml

正如您所期望的那样,它会下载 .cshtml 文件,因为浏览器无法读取 .cshtml,它会读取生成的 .html。

如果我指出:

http://websitename/subfolder/subfolder/Views/Pages/Index.html

它什么也找不到。

它通过 Visual Studio 在 localhost 上运行。发布时,启动页面只是根目录,它通过 VS 运行并指向正确的位置。

我的问题是您如何手动指向 Web 服务器上生成的 html,或者当我只是转到服务器上的根目录时它没有找到起始页的原因是什么?

我检查了 IIS 并确保将正确的内容设置为本地副本'true',并且我还在我的 web.config 文件中添加了 runAllManagedModulesForAllRequests=”true”。

任何帮助或正确方向的观点将不胜感激。

4

3 回答 3

2

在 MVC 中,您不通过浏览器访问视图,而是访问控制器上的操作,然后它们又返回一个视图。

所以你应该尝试访问

http://websitename/controller/action

控制器部分是控制器的名称,其中“控制器”位在末尾被吊起,例如访问 AccountController 上的登录操作,您将转到

http://websitename/Account/Login

你的动作应该在你的控制器中定义像这样

public ActionResult Login(string username, string password)
于 2012-08-31T09:16:58.747 回答
1

您似乎还没有安装.NET 4。请您澄清一下您的服务器设置,例如操作系统、IIS 版本等?

于 2012-08-31T09:16:00.783 回答
0

由于某种原因,请求不会从 IIS 转到 ASP.Net 运行时。根据您使用的 IIS 版本(也取决于您使用的服务器操作系统),此配置不同(或根本不需要)。在 MVC 路由中的某些旧版本的 IIS(例如版本)上,您必须将 .aspx(或任何其他扩展名)添加到所有路由(请参阅 Global.asax),然后配置 IIS 以将所有 .aspx 请求路由到ASP.Net 子系统。较新版本的 IIS 不需要所有这些。

MS的以下教程可能会有所帮助: http ://www.asp.net/mvc/tutorials/older-versions/deployment/using-asp-net-mvc-with-different-versions-of-iis-cs

于 2012-08-31T09:16:15.637 回答