我最近遇到了一个错误,试图用IIS托管我的asp.net站点。我找到了一个很多人信誓旦旦的解决办法。
解决方案:
对文件夹中的文件添加具有读权限的IIS_IUSRS
修改IIS认证方式为BasicAuthentication
刷新网站。会有用的
(http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html)
我在我的网里加了什么?配置文件?我以前从来没编辑过。以下是其当前内容:
<?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: \用户* * * * *网站视觉Studio2010 \ \文件\ \ PointsForTime \ web . config
您的web.config没有问题。你的网站在一个进程下运行。在iis中,您可以定义该进程的标识。您网站的应用程序池运行的身份(网络服务,本地系统等),应该有访问和读取web的权限。配置文件。
更新:
这个更新后的答案和上面的一样,但更长、更简单、更完善。
首先:您不必更改配置文件中的任何内容。没关系。问题出在windows文件权限上。
出现此问题是因为您的应用程序无法访问和读取web。配置文件。
使IIS_IUSRS组可以访问该文件。只需右击网页。单击“属性”,在“安全”页签下添加IIS_IUSRS。
这个IIS_IUSRS是什么?
你的网站就像一个exe文件。就像任何exe文件一样,它应该由用户启动,并根据分配给该用户的权限运行。
当你的网站在IIS中启动时,你的网站的应用程序池与一个用户相关联(网络服务、本地系统等. ...)(并且可以在IIS中更改)
因此,当您说IIS_IUSRS时,它意味着您的站点以任何用户(网络服务、本地系统等. ...)运行。
正如@Seph在下面的评论中提到的:如果你的计算机在某个域上,请记住IIS_IUSRS组是一个本地组。
另外,当您试图找到这个用户时,请检查位置,它应该设置为本地计算机,而不是公司域。
当IIS应用程序有一个物理路径包含正斜杠/而不是反斜杠\的虚拟目录时,我们就遇到了这种情况。这是在我们的持续交付过程中使用IIS的powershell管理API意外完成的。
错误配置示例- applicationHost.config . Config
<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
<virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>
确保physicalPath属性不包含正斜杠/,只包含反斜杠\
- applicationHost.config . Config
<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
<virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>
不像IIS_IUSRS那样授予所有IIS用户访问权,您也可以使用站点仅授予应用程序池标识访问权。这是微软推荐的方法,更多信息可以在这里找到:
https://support.microsoft.com/en-za/help/4466942/understanding-identities-in-iis
https://learn.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities
Fix:
首先查看上面的配置文件参数,以确定需要访问的位置。在本例中,需要访问整个发布文件夹。右键单击文件夹,选择属性,然后选择Security选项卡。
点击编辑…然后添加....
现在看看Internet信息服务(IIS)管理器和应用程序池:
在我的情况下,我的网站在LocalTest应用程序池下运行,然后我输入名称IIS appool \LocalTest
按“检查名称”键,就会找到用户。
给用户所需的访问权限(默认:读取和执行,列出文件夹内容和读取),一切都应该工作。