[asp.net] 由于权限不足,无法读取配置文件


Answers

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

我在IIS 7.5中使用win7 64

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

Question

我最近遇到了一个错误,试图用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




我给了权限并使用了ICACLS.exe,但没有奏效。 然后我改变了物理路径并成功运行。

(IIS 8.5 Windows 2012 R2)




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

任务完成!







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

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




  1. 转到IIS,(网站)
  2. 右键单击站点内的项目。 在这里输入图像描述

并点击编辑权限。

  1. 去安全。

  2. 点击编辑按钮。

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

    要么

  4. 点击提前。

  5. 点击立即查找按钮。

    并有选择可供选择。 选择IIS_USERS并单击确定...确定....确定。




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

就我而言,这是原因。




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

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




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

错误配置示例 - 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>



将您的项目转移到C以外的其他驱动器:为我工作的同样的错误。




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




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




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




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

删除虚拟应用程序并从头开始再次添加,并开始工作。

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




确保你的web.config文件没有被标记为只读




Related