由于权限不足,无法读取配置文件。

441

最近我在尝试使用IIS托管我的asp.net站点时遇到了一个错误。我找到了一种被许多人推崇的解决方案。

解决方案:

  1. 将IIS_IUSRS添加为具有该文件夹中文件读取权限的用户
  2. 更改IIS身份验证方法为BasicAuthentication
  3. 刷新网站,它会正常工作

(http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html)

但是我需要在web.config文件中添加什么呢?我以前从未编辑过。以下是它目前的内容:

<?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>

我的错误是:

配置错误:由于权限不足无法读取配置文件
配置文件:\?\C:\Users*****\Documents\Visual Studio2010\WebSites\PointsForTime\web.config


9
请参考安装重写模块。这将为您节省数小时的时间。 - regisbsb
我的解决方案是使用管理员权限打开的命令行运行命令。为此,请找到命令提示符,右键单击它,并单击以管理员身份运行。 - David Waddington
2
除了其他答案之外,还要注意加密文件系统(EFS)也可能会干扰IIS。 - G-Wiz
我已经完成了这个广告,现在本地主机正在要求密码,到目前为止,这是我最接近让它工作的方法,谢谢。 - Paul Ledger
2
对我来说,没有IIS_IUSR, 我对已验证的用户做了同样的操作,它起作用了。 - Bhanu Chhabra
40个回答

0

我遇到了一个错误信息,后来发现是因为我的物理文件夹位于网络驱动器而不是本地驱动器。似乎这些驱动器的权限默认情况下可能会有所不同。例如,虽然本地驱动器位置允许本地计算机的用户使用,但网络位置却没有。

此外,接受的答案对于这种情况不起作用。本地用户或IIS用户无法分配权限。解决方案是将物理文件夹移动到本地驱动器。


0
有时候,如果是一个新的服务器,你需要在IIS上配置或安装ASP.NET功能,以便它能够读取你的web.config文件。
在我的情况下,这就是原因。

0

我也遇到了同样的问题,按照这里的答案做了所有的事情,但仍然无法解决。 问题的后半部分是因为在“打开或关闭Windows功能”下关闭了.NET。


0

我在Windows 10上使用microsoftaccount\email@contosa.com帐户(例如,使用Microsoft帐户而不是本地帐户登录PC)时遇到了这个问题。

显然,在我的计算机上出现了一些损坏;删除IIS并重新添加它没有任何作用(因为似乎没有删除IIS元数据)。删除并重新创建应用程序池也没有帮助。

我的解决方案只是创建一个具有相同设置但不同名称的新应用程序池。这对我来说解决了问题;显然,某些东西已经损坏了应用程序池,即使删除它并使用相同的名称重新添加它也无法修复。


0
我曾经遇到过同样的问题,但这些解决方案都没有用。我一直收到相同的错误,并且在事件查看器中还有一个关于“无法启动监视更改”的错误。
唯一有效的方法是复制该文件夹并将其重新命名。这一定是Windows中一个损坏的文件夹,IIS/ASP.NET无法访问。

0
1. 进入IIS,(网站) 2. 右键单击网站中的项目。输入图像描述 3. 单击编辑权限。 4. 转到安全。 5. 单击编辑按钮。 6. 单击添加按钮。 输入 COMPUTER_NAME \ IIS_USERS 或者 7. 单击高级。 8. 单击查找现在按钮。 9. 选择选项。 选择IIS_USERS并单击确定...确定...确定。

0

请确保您的 web.config 文件未标记为只读


0

enter image description here

我将.NET CLR版本设置为无托管代码,一切都开始正常工作。


0

我尝试了之前的大部分建议,但都无济于事。我无法重新加载网站,所以我编辑了.csproj文件并更改了端口号,立即就解决了问题:

 <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 文件


-2

在某些情况下,web.config文件的格式不正确。

打开web.config文件并检查所有XML标记。 (例如,通过将以下代码放入web.config中,如果执行项目,则问题来自它)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>


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