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

我最近遇到了一个错误,试图用IIS托pipe我的asp.net网站。 我find了许多人发誓的解决scheme。

解:

  1. 添加对文件夹中的文件具有读取权限的IIS_IUSRS
  2. 将IIS身份validation方法更改为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> 

我的错误是:

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

你的web.config没有问题 。 您的网站在一个进程下运行。 在iis中,您可以定义该进程的身份。 您的网站的应用程序池运行的身份( networking服务,本地系统等)应具有访问和读取web.config文件的权限。

更新:

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

首先 :你不需要改变你的configuration文件中的任何东西。 没关系 。 问题是与Windows文件的权限

发生此问题是因为您的应用程序无法访问读取web.config文件。

使文件可以访问IIS_IUSRS组。 只需右键单击web.config并单击属性 ,在安全选项卡下,添加IIS_IUSRS

那么这个IIS_IUSRS是什么东西?

你的网站 就像一个exe文件。 就像任何exe文件一样,它应该由用户启动,根据分配给该用户的权限运行。

当您的站点在IIS中启动时,您的网站的应用程序池用户networking服务,本地系统等)相关联(并且可以在IIS中进行更改)

所以,当你说IIS_IUSRS ,它意味着你的网站正在运行的任何用户networking服务,本地系统等)。

正如@Seph下面评论中提到的那样如果您的计算机位于域中 ,请记住IIS_IUSRS组是本地组 。 此外,请确保当您尝试查找此用户时,请检查它应该设置为本地计算机而不是公司域的位置。

将Identity从ApplicationPoolIdentity更改为LocalSystem完成了这项工作;)。

我正在使用IIS 7.5的win7 64

更多关于应用程序池身份在IIS 7.5和赢得7

在这里输入图像说明

我有什么似乎是在web.config文件相同的权限问题。
但是,我的问题是由于IIS无法加载configuration文件,因为它包含URL重写规则,我没有安装新的服务器上的IIS URL重写模块。

解决scheme:安装重写模块。
希望能省几个小时。

你不必改变你的web.config中的任何东西。

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

转到父文件夹,右键单击并select属性 。 select安全选项卡,编辑权限和添加 。 点击高级立即查找 。 selectIIS_IUSRS并再次单击确定确定 。 确保你有检查 。 单击确定并再次确定

任务完成!

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

我所做的只是改变了一些步骤:

  1. 右键单击父文件夹(谁失去了权限),
  2. Properties => Security =>在“Group or user names:”中,
  3. 点击修改…
  4. 窗口“您的文件夹的权限”将被打开。
  5. 在“组或用户名称”中按ADD … btn,
  6. inputAuthen并按检查名称,
  7. 您将看到完整的组名“ Authenticated Users
  8. 按ok =>应用。
  9. 这应该再次启用权限。

这对我有效。

使该文件可以被IIS_IUSRS组访问。 右键单击您的web.config,展开属性,然后在安全选项卡下,添加IIS_IUSRS。 给组读/写访问权限。

当该组不可用时,请使用ComputerName \ IIS_IUSRSreplaceIIS_IUSRS

将权限授予IIS_IUSRS时 ,应检查Web应用程序的IIS /authentication部分中的匿名authentication凭证使用的是应用程序池标识而不是IUSR。

在这里输入图像说明

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

我需要为IUSR添加权限(除了ISS-IUSRS,正如其他人所build议的那样)。 (另见: http : //codeasp.net/blogs/raghav_khunger/microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-unauthorized )

我用subst创build了一个从D:到C:的映射,以保持与团队中其他开发人员相同的设置。 这也给了我所述的相同的错误。 删除这个固定它给我。

我们有一个网站在apppool中运行一个特定的身份,只有在给予该用户对包含web.config的文件夹的读取权限之后才能工作。 我们添加了“每个人”的用户阅读和一切正常工作后,我们跟踪了这一点。

对我来说,在我的本地机器上进行debugging期间出现了错误,结果与编译网站时由.NET Framework启动的基本web.config相关。 我的C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config文件有一个无法识别的元素(folderLevelBuildProviders)。 修复这个固定的500.19错误。

请参阅: IISpipe理器不能在.NET 4应用程序上configuration.NET编译

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

右键单击Web.Config => Tab Security => Button Edit => Button Add => Button Advanced => Button Find Now =>在search结果中select你的组(在我们的例子中是“IIS_IUSRS”)=> Ok => Ok =>好

我已经通过为应用程序池用户(WIN Server 2008 R2)添加读文件夹的权限来解决此问题:C:\ Windows \ System32 \ inetsrv \ config

一个小背景:我们的服务器已被黑客使用古典错误应用程序用户有更多的权限,它应该(本地pipe理员)。

为了解决这个问题,我们创build了一个只有应用程序文件夹权限的新域用户,最小权限并将其分配为应用程序池用户。 而不是我们在这个问题上遇到的问题,这是解决我们的问题。

把你的项目转移到C以外的其他驱动器上:为我工作的错误。

由于权限不足,我收到“无法读取configuration文件”。 原因是ASP.NET 4.0 32位和64位的IIS中的ISAPI和CGI限制被设置为拒绝。 将它们标记为允许解决我的问题。

有一个虚拟应用程序的这个问题。 所有的权限都设置好了。 IIS_IUSRS,AppPoolIdentity然后授予Everyone的完全访问权限。 没有工作。 重新启动的apppool,网站和IIS,但没有去。

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

希望我知道什么解决了它。

检查文件是否未被标记为只读 ,尽pipeIIS_IUSRS权限将显示相同的消息。

我有这个错误信息,原来是由于我的物理文件夹位于networking驱动器而不是本地驱动器。 看来这种驱动器的权限默认情况下可能会有所不同。 例如,当本地驱动器位置向本地计算机的用户授予权限时,networking位置没有。

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

我有同样的问题,在做了所有的答案后,它仍然复制。 问题的后半部分是.NET在“打开或closuresWindowsfunction”下closures的事实

IIS应用程序具有一个包含正斜杠/而不是反斜杠\物理path虚拟目录时,发生了这种情况。 在我们的持续交付过程中,这意外地使用了适用于IIS的powershellpipe理API。

错误的configuration示例 – applicationHost.config

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

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

更正的configuration示例 – applicationHost.config

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

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

就我而言,这是原因。

在我的情况下,我试图从一个映射驱动器(subst)主机页面。 问题是subst是在我的帐户下运行的,IIS用户无法看到同一个驱动器

我给了权限,并使用ICACLS.exe,但没有工作。 然后我改变了物理path,并成功运行。

(IIS 8.5 Windows 2012 R2)

接受的解决scheme不适合我。 我使用一个Git回购,并克隆到以下文件夹

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

我做了新的IIS网站,并指出了path。 哪些没有在接受的解决scheme中build议的iis_iusrs权限。 当我添加权限,它仍然无法正常工作。

它只在我向“用户”组授予以下权限时才开始工作,并且inheritance将权限级联到web.config。 可能应该只是应用到web.config来减less攻击面积。

用户权限

当然,这是权限问题。 我采取了以下步骤,它为我工作。

  1. 在左上angularselect您的网站或应用程序。 在大多数情况下,它将在默认网站下
  2. 单击IISpipe理器7或更高版本右上angular的基本设置
  3. 点击连接button。
  4. 使用“ 特定用户 ”,点击设置button。
  5. input您的用户名和密码。 像域\用户名 。 对我来说就像ABC \ rrajkumar,input密码。
  6. 重新启动IIS,浏览您的网站。 它应该现在工作。
  1. 转到IIS,(网站)
  2. 右键单击站点内的项目。 在这里input图像说明

并点击编辑权限。

  1. 去安全。

  2. 点击编辑button。

  3. 点击添加button。 键入COMPUTER_NAME \ IIS_USERS

    要么

  4. 点击提前。

  5. 点击现在查找button。

    并有select可供select。 selectIIS_USERS,然后单击确定…确定….确定。

我有同样的问题,这些解决scheme都没有为我工作。 我一直得到相同的错误,并在事件查看器中出现一个关于“无法开始监视更改”的错误。

唯一的工作是复制文件夹并重新命名。 它必须是Windows中IIS / ASP.NET无法访问的文件夹。