Cannot read configuration file due to insufficient permissions
我最近在尝试使用IIS托管我的asp.net网站时遇到了错误。 我找到了许多人发誓的解决方案。
Solution:
Add IIS_IUSRS with Read permission on files in the folder Change IIS authentication method to BasicAuthentication refresh the website. It will work
(http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html)
虽然我可以添加到我的web.config文件中? 我以前从未编辑过它。 这是它目前的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/> </system.web> </configuration> |
我的错误是:
Config Error: Cannot read configuration file due to insufficient permissions
Config File: \?\C:\Users*****\Documents\Visual Studio2010\WebSites\PointsForTime\web.config
您的web.config没有问题。您的网站在一个流程下运行。在iis中,您可以定义该过程的标识。您的网站的应用程序池运行的标识(网络服务,本地系统等)应具有访问和读取web.config文件的权限。
更新:
这个更新的答案与上面相同,但更长一点,更简单和改进。
首先:您不必更改配置文件中的任何内容。没关系。问题在于Windows文件权限。
出现此问题的原因是您的应用程序无法访问和读取web.config文件。
使IIS_IUSRS组可以访问该文件。只需右键单击web.config并单击属性,在安全选项卡下,添加IIS_IUSRS。
那IIS_IUSRS是什么东西呢?
您的网站就像一个exe文件。就像任何exe文件一样,它应该由用户启动,并根据分配给该用户的权限运行。
当您的站点在IIS中启动时,您的网站的应用程序池与用户(网络服务,本地系统等)相关联(并且可以在IIS中更改)
因此,当您说IIS_IUSRS时,它表示您的站点正在运行的任何用户(网络服务,本地系统等)。
正如@Seph在下面的评论中提到的:如果您的计算机在域上,请记住IIS_IUSRS组是本地组。
还要确保当您尝试查找此用户时,请检查应将其设置为本地计算机而非公司域的位置。
Editor's note: Doing what this answer says is DANGEROUS! The LocalSystem account is a ...
Completely trusted account, more so than the administrator account. There is nothing on a single box that this account cannot do, and it has the right to access the network as the machine (this requires Active Directory and granting the machine account permissions to something)
BLOCKQUOTE>
将标识从ApplicationPoolIdentity更改为LocalSystem完成了工作;)。
我在IIS 7.5中使用win7 64
更多关于
IIS 7.5和win 7中的应用程序池标识
我在
web.config 文件上遇到了相同的权限问题。
但是,我的问题是由于IIS无法加载配置文件导致的,因为它包含URL重写规则,而我没有在新服务器上安装IIS URL重写模块。解决方案:安装重写模块。
希望能节省几个小时。
当我尝试与其他用户共享站点根文件夹时,我遇到了同样的问题。某些文件夹丢失了权限。
所以我按照Afshin Gh的建议,按照步骤向IIS_IUSRS组添加权限。
问题是这个小组不适合我。我正在使用Windows 7。我做了什么我刚改变了一些步骤:
右键单击父文件夹(谁失去了权限), Properties => Security =>在"组或用户名:"中, 点击编辑... 窗口"您的文件夹的权限"将被打开。 在"组或用户名:"中按ADD ... btn, 键入Authen并按Check Names, 您将看到完整的组名称"Authenticated Users" 按ok => apply。 这应该再次启用权限。 这对我有用。
您不必在web.config中更改任何内容。
问题是文件系统权限。您的文件权限不允许IIS_IUSRS用户访问web.config(或可能是任何文件)。在Windows中更改其文件权限以允许IIS_IUSRS帐户访问它。
使该文件可供IIS_IUSRS组访问。右键单击web.config,展开属性,然后在安全选项卡下添加IIS_IUSRS。授予组读/写访问权限。
当该组不可用时,请将ComputerName IIS_IUSRS替换为IIS_IUSRS
转到父文件夹,右键单击并选择"属性"。选择"安全"选项卡,编辑权限并添加。单击"高级"和"立即查找"。选择IIS_IUSRS,然后单击"确定"再次单击"确定"。确保你有支票。单击确定再次单击
任务完成!
当您向IIS_IUSRS授予权限时,应检查在Web应用程序的IIS /身份验证部分中,匿名身份验证凭据是否使用应用程序池标识而不是IUSR。
出于某种原因,您的web.config设置为只读。取消选中web.config文件的readonly选项。
我需要向IUSR添加权限(除了ISS-IUSRS之外,正如其他人所建议的那样)。
(也可以看看:
http://codeasp.net/blogs/raghav_khunger/microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-unauthorized)
我使用subst来创建从D:到C:的映射,以便与团队中的其他开发人员保持相同的设置。这也给了我同样的错误。删除它修复它为我。
接受的解决方案不适合我。我使用Git repo并将其克隆到以下文件夹中
1
2 c:\users\myusername\source
epos\myWebSite我创建了新的IIS网站并指出了它的路径。哪个没有在接受的解决方案中建议的iis_iusrs权限。当我添加权限时,它仍然无法正常工作。
它只在我向"用户"组提供以下权限并且继承将权限级联到web.config时才开始工作。可能应该只将它应用于web.config以减少攻击面积。
对我来说,在我的本地计算机上调试期间出现了错误,并且结果与基本web.config相关,这是由.NET Framework在编译网站时启动的。我的C: Windows Microsoft.NET Framework64 v4.0.30319 Config web.config文件有一个无法识别的元素(folderLevelBuildProviders)。修复此问题修复了500.19错误。
请参阅:IIS管理器无法在.NET 4应用程序上配置.NET编译
我们在apppool中运行了一个具有特定身份的网站,只有在为该用户提供对包含web.config的文件夹的读访问权之后才有效。
我们在将'everyone'用户添加为read后跟踪了这一点,一切正常。
所有答案都是有效的,并且在不同情况下有效。
对我来说,重新启动Visual Studio工作。
将进程模型标识更改为LocalSystem为我解决了这个问题。如果右键单击应用程序池并选择"高级设置",则可以找到此设置。我正在运行IIS 7.5。
当IIS应用程序具有包含正斜率 / 而不是反斜杠 的物理路径的虚拟目录时,就会发生这种情况。这是在我们的持续交付过程中使用适用于IIS的PowerShell管理API意外完成的。
错误配置示例 -
applicationHost.config
1
2 <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>确保
physicalPath 属性不包含正斜杠 / ,只有反斜杠更正了配置示例 -
applicationHost.config
1
2 <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>
我通过向应用程序池用户(WIN SERVER 2008 R2)的文件夹添加读取权限来解决这个问题:
C: WINDOWS SYSTEM32 INETSRV CONFIG一点背景:
我们的服务器已使用经典错误进行攻击,其中app用户拥有应该具有的更多权限(本地管理员)。为了解决这个问题,我们创建了新的域用户,该用户只对应用程序文件夹具有权限,具有最小所需权限并将其指定为应用程比我们遇到的问题,这是解决我们的问题。
将项目转移到C以外的某个驱动器:
为我工作同样的错误。
如果您的应用程序位于虚拟目录中,并且文件路径是映射驱动器,则会发生这种情况。
如果您将文件的路径更改为本地驱动器,这将解决它,如果这确实是您的问题。
右键单击Web.Config => Tab Security => Button Edit => Button Add => Button Advanced => Button Find Now =>在搜索结果中选择您的组(在我们的例子中为"IIS_IUSRS")=> Ok => Ok =>好
我在使用microsoftaccount [email protected]帐户的应用程序池的Windows 10上运行此问题(例如,使用Microsoft帐户而不是本地帐户登录到PC)。
显然在我的电脑上有些东西被腐蚀了;删除IIS并重新添加它什么也没做(因为似乎没有删除IIS元数据库)。删除和重新创建应用程序池也没有帮助。
我的解决方案只是创建一个具有相同设置但名称不同的新应用程序池。这为我解决了这个问题;显然有些东西被apppool破坏了,即使删除它并重新添加它同名也无法修复。
我有这个错误消息,原来是由于我的物理文件夹位于网络驱动器而不是本地驱动器。默认情况下,此类驱动器上的权限似乎不同。例如,虽然本地驱动器位置授予本地计算机用户许可,但网络位置却没有。
此外,接受的答案对于这种情况不起作用。本地用户或IIS用户无法分配权限。解决方案是将物理文件夹移动到本地驱动器。
我在localhost / MyApp上运行一个网站,并通过Visual Studio本身创建的虚拟目录运行Visual Studio。
对我来说,"解决方案"是删除虚拟目录并让Visual Studio重新创建它。
我也收到了"由于权限不足而无法读取配置文件"。结果显示IIS中的ISAPI和CGI限制,因为ASP.NET 4.0 32位和64位都被设置为拒绝。将它们标记为允许修复我的问题。
我有同样的问题,在完成所有写在这里作为答案的东西后,它仍然复制。
问题的后半部分是在"打开或关闭Windows功能"下关闭.NET的事实
检查文件是否未标记为只读,尽管IIS_IUSRS权限,它将显示相同的消息。
我有同样的问题,这些解决方案都不适合我。我在事件查看器中一直收到同样的错误和一个关于"无法开始监视更改"的错误。
唯一有效的方法是复制文件夹并重命名。它必须是Windows中的一个损坏的文件夹,IIS / ASP.NET无法访问。
我尝试了以前的大部分建议,但都是徒劳的。 我无法重新加载网站,所以我编辑了.csproj文件并更改了端口号,它立即起作用:
1
2
3
4
5
6
7
8
9
10
11
12 <WebProjectProperties>
<UseIIS>True</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>**4000**</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:**4000**/</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>编辑.csproj文件
就我而言,我试图从映射驱动器(subst)中托管页面。
问题是,subst在我的帐户下运行,IIS用户无法看到相同的驱动器
有时,如果它是新服务器,则需要在IIS上配置或安装ASP.NET功能,以便能够读取您的web.config文件。
在我的情况下,这就是原因。
我给了许可并使用了ICACLS.exe但没有用。然后我改变了物理路径,它成功地运行了。
(IIS 8.5 windows 2012 R2)
当然,这是权限问题。我采取了以下步骤,它对我有用。
在左下角选择您的网站或应用程序。在大多数情况下,它将位于默认网站下。 单击IIS管理器7或更高版本右上角的基本设置。 单击连接按钮。 使用"特定用户",单击"设置"按钮。 输入您的用户名和密码。喜欢Domain username。对我来说就像
ABC rrajkumar,输入密码。重启IIS,浏览您的网站。它现在应该工作。
转到IIS,(站点) 右键单击sites.enter图像描述中的项目
这里并单击编辑权限。
去安全。
点击编辑按钮。
点击添加按钮。键入COMPUTER_NAME IIS_USERS
要么
点击提前。
点击立即查找按钮。
并且可以选择。
选择IIS_USERS并单击确定...确定....确定
。
有虚拟应用程序的这个问题。所有权限都已设置。
IIS_IUSRS,AppPoolIdentity然后给予Everyone完全访问权限。没有任何效果。重新启动了apppool,网站和IIS,但没有去。删除了虚拟应用程序并从头开始重新添加它,它开始工作。
希望我知道是什么解决了它。
确保您的web.config文件未标记为只读