IIS7 403 - 访问被拒绝

9
我正在尝试在运行iis7的服务器上部署我使用mvc3构建的网站。我可以通过本地计算机上的iis7将其运行,但是当我尝试在远程访问时,出现403访问被拒绝错误,并且当我尝试从服务器本身查看它时,出现“连接超时”的错误。
我确保使用asp_regiis.exe具有最新的.Net 4框架。我尝试了多个应用程序池,包括默认的应用程序池。我允许了.net4 isapi。我已更改权限以允许IUSER,SERVER NETWORK和Authenticated Users进行访问。我确保默认文档列表与我的笔记本电脑上的iis7(正常工作)相同。
我还在服务器上运行其他多个站点(使用WebForms而不是MVC),一切都正常。
这可能与我如何传递文件到服务器有关吗?我只是压缩这些文件并将它们(和解压缩它们)放在服务器上,并指向iis创建的目录。
我错过了什么?

你的意思是IIS只有一个压缩过的应用程序副本吗? - Kyeotic
抱歉没有说明。我解压缩了它并将文件放入一个文件夹中。 - Shattuck
7个回答

14

我上周遇到过这个错误,它可能由很多因素引起:

  1. .NET Framework的正确版本未安装或未使用asp_regiis.exe注册
  2. 在您的web.config中,“runAllManagedModulesForAllRequests”设置为false
  3. MVC的正确版本未安装在服务器上
  4. 您有一个忽略请求的忽略路由
  5. 您在Application_Start中有一个早期异常,导致站点无法正常启动

就我而言,我忘记将日志目录路径的值更改为现有的目录。

要确定是配置错误还是应用程序错误,您可以在VS中创建一个新的默认MVC项目,并在同一应用程序池中部署它。


这些步骤让我找到了正确的答案。最终结果是由多个不同的因素造成的。其中一个主要原因是我选择了正确的应用程序池,但选择了经典模式而不是集成模式。 - Shattuck
1
在 web.config 中将 "runAllManagedModulesForAllRequests" 设置为 true 对我起了作用。 - chamara

3

不要将您的应用程序压缩,最好是将其发布(在VS中,右键单击您的项目并发布),然后将其部署到您的网站上(有几个选项可供选择)。

而对于IIS来说,似乎是身份验证问题。尝试允许匿名身份验证。在IIS管理器中,转到您的网站,单击“身份验证”模块,并启用“匿名身份验证”。

看看这之后会发生什么,即使“超时”问题很奇怪...为了确保安全,默认情况下禁止浏览网站内容,如果尝试这样做,则会收到403错误。

您把应用程序放在哪里了?有时将其放在特定文件夹(如Programs files等)中可能会导致访问配置问题。请尝试安装在根目录下,例如C:\ Websites \ MyApp,以便测试时避免用户权限问题。


3

请检查以下几点。

  1. 您是否在 IIS 中将您解压文件的目录设置为应用程序?是否运行了 .NET 3.5/4.0 的应用程序?

  2. 您创建的应用程序所在的应用程序池的流水线是集成模式还是经典模式?

通常情况下,在部署 MVC 应用程序时,403 不是权限问题。 它告诉您不允许目录浏览。这是因为如果没有上述两个项目中的任一个(或 IIS 中的自定义通配符映射),Web 服务器就不知道如何处理路由,这是 MVC 应用程序的基础。


2

是的,擅自更改权限并不是最好的想法。感谢您的见解! - Shattuck

1

您需要确保解压缩文件的文件夹已设置正确的权限。此外,您在该站点中是否设置了身份验证?


我修改了那个文件夹的权限,但是似乎没有起作用。另外,我不确定你所指的身份验证是什么。我对iis相当新。 - Shattuck

0

如果是aspx文件,请确保在IIS上设置了默认页面,如果没有安装asp.net应用程序。一旦安装完成,默认的aspx文件将被创建。


0
在设置网站时,您是否通过单击“测试连接”来测试IIS设置。如果没有,请检查您的身份验证设置、文件夹访问设置和应用程序池设置。

谢谢你的回答。最终问题有很多方面,但应用程序池是其中的一部分。 - Shattuck

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