首页 文章

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

提问于
浏览
292

我最近在尝试使用IIS托管我的asp.net网站时遇到了错误 . 我找到了许多人发誓的解决方案 .

解决方案:添加具有读取权限的IIS_IUSRS文件夹中的文件将IIS身份验证方法更改为BasicAuthentication刷新网站 . 它会工作

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

30 回答

  • 1

    no problem with your web.config . 您的网站在一个流程下运行 . 在iis中,您可以定义该过程的标识 . identity ,您的网站 application pool 运行为(网络服务,本地系统等),应该有权访问和读取web.config文件 .

    Update:

    这个更新的答案与上面相同,但更长,更简单和改进 .

    First of all :您不必更改配置文件中的任何内容 . It's OK . 问题出在 windows file permissions 上 .

    出现此问题是因为 your application 无法 accessread web.config 文件 .

    使文件可供 IIS_IUSRS 组访问 . 只需 right click web.config 并单击 properties ,在 security 标签下,添加 IIS_IUSRS .

    那IIS_IUSRS是什么东西呢?

    您的 web sitelike an exe 文件 . 就像任何exe文件一样,它应该是 started by a user 并且它运行 according to permissions 分配给该用户 .

    当您的网站在 IIS 中启动时,您网站的 Application Poola user (网络服务,本地系统等)相关联(并且可以在IIS中更改)

    因此,当您说 IIS_IUSRS 时,表示您的网站正在运行的 any user (网络服务,本地系统等) .

    正如 comment below 中提到的 @Seph :如果您的计算机位于域中,请记住 IIS_IUSRS 组是 local group . 还要确保当您尝试查找此用户时,请检查应将其设置为本地计算机而非公司域的位置 .

  • 6

    编者注:做这个答案说的是危险的! LocalSystem帐户是...完全信任的帐户,比管理员帐户更多 . 这个帐户无法在一个盒子上执行任何操作,并且它有权作为计算机访问网络(这需要Active Directory并授予计算机帐户权限)


    将身份从 ApplicationPoolIdentity 更改为 LocalSystem 完成了工作;) .

    我在IIS 7.5中使用win7 64

    更多关于Application Pool Identity in IIS 7.5 and win 7

    enter image description here

  • 14

    我在 web.config 文件上遇到了相同的权限问题 .
    但是,我的问题是由于IIS无法加载配置文件导致的,因为它包含URL重写规则,而我没有在新服务器上安装IIS URL重写模块 .

    Solution: 安装重写模块 .
    希望能节省几个小时 .

  • 0

    当我尝试与其他用户共享站点根文件夹时,我遇到了同样的问题 . 某些文件夹丢失了权限 . 所以我按照Afshin Gh的建议,按照步骤添加 IIS_IUSRS 组的权限 . 问题是这个小组不适合我 . 我正在使用Windows 7 .

    我做了什么我刚改变了一些步骤:

    • 右键单击父文件夹(谁失去了权限),

    • Properties => Security =>在"Group or user names:",

    • 点击编辑...

    • Window "Permission for your folder"将被打开 .

    • 在"Group or user names:"按ADD ... btn,

    • 键入 Authen 并按检查名称,

    • 您将看到完整的组名“ Authenticated Users

    • 按ok =>申请 .

    • 这应该再次启用权限 .

    这对我有用 .

  • 54

    您不必在web.config中更改任何内容 .

    问题是文件系统权限 . 您的文件权限不允许IIS_IUSRS用户访问web.config(或可能是任何文件) . 在Windows中更改其文件权限以允许IIS_IUSRS帐户访问它 .

  • 1

    转到父文件夹,右键单击并选择 Properties . 选择 Security 选项卡,编辑权限和 Add . 单击 AdvancedFind Now . 选择 IIS_IUSRS 并再次单击 OKOK . 确保您已检查 Write . 再次单击 OKOK .

    任务完成!

  • 0

    使文件可供 IIS_IUSRS 组访问 . 右键单击web.config,展开属性,然后在安全选项卡下添加IIS_IUSRS . 为组提供读/写访问权限 .

    当该组可用 NOT 时,将 ComputerName\IIS_IUSRS 替换为IIS_IUSRS

  • 0

    当您向 IIS_IUSRS 授予权限时,应检查在Web应用程序的 IIS/Authentication 部分中,匿名身份验证凭据是否使用应用程序池标识而不是IUSR .

    enter image description here

  • 65

    出于某种原因,您的web.config设置为只读 . 取消选中web.config文件的只读选项 .

  • 1

    我需要向IUSR添加权限(除了ISS-IUSRS之外,还有其他人建议) . (另见:http://codeasp.net/blogs/raghav_khunger/microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-unauthorized

  • 0

    我使用subst来创建从D:到C:的映射,以便与团队中的其他开发人员保持相同的设置 . 这也给了我同样的错误 . 删除它修复它为我 .

  • 470

    我们在apppool中运行了一个具有特定身份的网站,只有在为该用户提供对包含web.config的文件夹的读访问权之后才能运行 . 我们在将'everyone'用户添加为read后将其跟踪下来,一切正常 .

  • 0

    对我来说,在我的本地计算机上调试期间出现了错误,并且结果与基本web.config相关,这是由.NET Framework在编译网站时启动的 . 我的C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config文件有一个无法识别的元素(folderLevelBuildProviders) . 修复此问题修复了500.19错误 .

    看到:IIS Manager can't configure .NET Compilation on .NET 4 Applications

  • 1

    将进程模型标识更改为LocalSystem为我解决了这个问题 . 如果右键单击应用程序池并选择“高级设置”,则可以找到此设置 . 我正在运行IIS 7.5 .

  • 1

    右键单击Web.Config => Tab Security => Button Edit => Button Add => Button Advanced => Button Find Now =>在搜索结果中选择您的组(在我们的例子中为“IIS_IUSRS”)=> Ok => Ok =>好

  • 1

    IIS applicationVirtual Directory 带有包含正斜杠/而不是反斜杠的 Physical Path 时,就会发生这种情况 . 这是在我们的持续交付过程中使用适用于IIS的PowerShell管理API意外完成的 .

    Bad Config示例 - applicationHost.config

    <application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
        <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
    </application>
    

    确保 physicalPath 属性不包含正斜杠/,只包含反斜杠\

    更正了配置示例 - applicationHost.config

    <application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
        <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
    </application>
    
  • 1

    我通过向应用程序池用户(WIN SERVER 2008 R2)的文件夹添加读取权限解决了这个问题:C:\ Windows \ System32 \ inetsrv \ config

    一点背景:我们的服务器已被黑客攻击使用经典错误,其中app用户拥有应该具有的更多权限(本地管理员) .

    为了解决这个问题,我们创建了新的域用户,该用户只对应用程序文件夹具有权限,具有最小所需权限并将其指定为应用程比我们遇到的问题,这是解决我们的问题 .

  • 23

    将项目转移到C以外的某个驱动器:为我工作时出现同样的错误 .

  • 0

    接受的解决方案不适合我 . 我使用Git repo并将其克隆到以下文件夹中

    c:\users\myusername\source\repos\myWebSite
    

    我创建了新的IIS网站并指出了它的路径 . 哪个没有在接受的解决方案中建议的iis_iusrs权限 . 当我添加权限时,它仍然无法正常工作 .

    它只在我向“用户”组提供以下权限并且继承将权限级联到web.config时才开始工作 . 可能应该只将它应用于web.config以减少攻击面积 .

    User Pemissions

  • 9

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

  • 0

    我也收到了“由于权限不足而无法读取配置文件” . 结果是IIS中的ISAPI和CGI限制,因为ASP.NET 4.0 32位和64位都被设置为拒绝 . 将它们标记为允许修复我的问题 .

  • 14

    有虚拟应用程序的这个问题 . 所有权限都已设置 . IIS_IUSRS,AppPoolIdentity然后给予Everyone完全访问权限 . 没有任何效果 . 重新启动了apppool,网站和IIS,但没有去 .

    删除了虚拟应用程序并从头开始重新添加它,它开始工作 .

    希望我知道是什么解决了它 .

  • 0

    检查文件是否未标记为 read-only ,尽管IIS_IUSRS权限,它将显示相同的消息 .

  • 1

    我有这个错误消息,原来是由于我的物理文件夹位于网络驱动器而不是本地驱动器 . 默认情况下,此类驱动器上的权限似乎不同 . 例如,虽然本地驱动器位置授予本地计算机用户许可,但网络位置却没有 .

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

  • 17

    我有同样的问题,在完成所有写在这里作为答案的东西后,它仍然复制 . 问题的后半部分是在“打开或关闭Windows功能”下关闭.NET的事实

  • 5

    有时,如果它是新服务器,则需要在IIS上配置或安装ASP.NET功能,以便能够读取您的web.config文件 .

    在我的情况下,这就是原因 .

  • 3

    就我而言,我试图从映射驱动器(subst)中托管页面 . 问题是,subst在我的帐户下运行,IIS用户无法看到相同的驱动器

  • 0

    我给了许可并使用了ICACLS.exe但没有用 . 然后我改变了物理路径并且它成功运行了 .

    (IIS 8.5 windows 2012R2)

  • 1

    当然,这是权限问题 . 我采取了以下步骤,它对我有用 .

    • 在左上角选择您的网站或应用程序 . 在大多数情况下,它将在 Default web site 之下 .

    • 单击IIS管理器7或更高版本右上角的 Basic settings .

    • 单击 connect as 按钮 .

    • 使用“ Specific User ”,单击“设置”按钮 .

    • 输入您的用户名和密码 . 喜欢 Domain\username . 对我来说就像ABC \ rrajkumar,输入密码 .

    • 重启IIS,浏览您的网站 . 它现在应该工作 .

  • 0

    并单击编辑权限 .

    • 转到安检 .

    • 点击编辑按钮 .

    • 单击“添加”按钮 . 键入COMPUTER_NAME \ IIS_USERS

    要么

    • 点击进入 .

    • 点击立即查找按钮 .

    并且可以选择 . 选择IIS_USERS,然后单击确定...确定....确定 .

相关问题