由于权限不足,无法读取configuration文件
我最近遇到了一个错误,试图用IIS托pipe我的asp.net网站。 我find了许多人发誓的解决scheme。
解:
- 添加对文件夹中的文件具有读取权限的IIS_IUSRS
- 将IIS身份validation方法更改为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>
我的错误是:
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。
我所做的只是改变了一些步骤:
- 右键单击父文件夹(谁失去了权限),
- Properties => Security =>在“Group or user names:”中,
- 点击修改…
- 窗口“您的文件夹的权限”将被打开。
- 在“组或用户名称”中按ADD … btn,
- inputAuthen并按检查名称,
- 您将看到完整的组名“ Authenticated Users ”
- 按ok =>应用。
- 这应该再次启用权限。
这对我有效。
使该文件可以被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攻击面积。
当然,这是权限问题。 我采取了以下步骤,它为我工作。
- 在左上angularselect您的网站或应用程序。 在大多数情况下,它将在默认网站下 。
- 单击IISpipe理器7或更高版本右上angular的基本设置 。
- 点击连接button。
- 使用“ 特定用户 ”,点击设置button。
- input您的用户名和密码。 像域\用户名 。 对我来说就像ABC \ rrajkumar,input密码。
- 重新启动IIS,浏览您的网站。 它应该现在工作。
- 转到IIS,(网站)
- 右键单击站点内的项目。 在这里input图像说明
并点击编辑权限。
-
去安全。
-
点击编辑button。
-
点击添加button。 键入COMPUTER_NAME \ IIS_USERS
要么
-
点击提前。
-
点击现在查找button。
并有select可供select。 selectIIS_USERS,然后单击确定…确定….确定。
我有同样的问题,这些解决scheme都没有为我工作。 我一直得到相同的错误,并在事件查看器中出现一个关于“无法开始监视更改”的错误。
唯一的工作是复制文件夹并重新命名。 它必须是Windows中IIS / ASP.NET无法访问的文件夹。