我们在将ASP.NET应用程序迁移到Windows Server2008 R2 x64和IIS7.5时遇到了麻烦。问题是我们的ASP.NET应用程序会写入日志文件,而这些日志文件并没有被写入。应用程序写入日志文件的唯一方式是,如果我作为本地管理员用户登录到服务器,或者如果我右键单击并以管理员身份运行IE,这两种方法都不是我们可以接受的解决方案。
我们的平台是: Windows Server2008 R2 x64 (UAC设置是默认设置) IIS7.5 ASP.NET 4.0 (使用Windows身份验证和模拟,两者都在web.config中打开)
我们的应用程序安装到: D:appname (所有的.aspx、.dll等文件都在这里) \Log (应用程序尝试将日志文件写入此文件夹)
在服务器上:创建新的应用程序池(名称: appname,IIS4.0,托管管道模式: Classic,身份: ApplicationPoolIdentity,加载用户配置文件: False,所有其他属性均为默认值)创建指向D:appname的.NET应用程序并将其添加新的应用程序池(完全信任级别)在本地管理员组中具有域用户
使用上面列出的所有配置和默认设置,ASP.NET应用程序将不会写入日志文件。该应用程序在浏览器中似乎运行正常,但没有log.txt文件。
为了尝试“修复”此问题,我们尝试了许多方法:已尝试的应用程序池设置:托管管道模式:集成的已尝试的应用程序池设置: Identity: Identity: NetworkService已尝试的应用程序池设置:Identity:Identity已尝试的应用程序池设置:加载用户配置文件: True为用户组提供对应用程序文件夹结构(已尝试的应用程序名文件夹、已尝试的日志文件夹、仅已尝试的appnameWebSite和日志文件夹)的文件系统的完全控制权限授予LocalSystem AppPoolappname用户对应用程序文件夹结构的文件系统的完全控制权限(已尝试的应用程序名文件夹、已尝试的日志文件夹、仅已尝试的appnameWebSite和日志文件夹)
所有这些事情都没有帮助。同样,该应用程序将运行良好,只是不会创建日志文件。
如上所述,在应用程序运行时创建日志文件的唯一方法是,如果我们使用本地管理员帐户登录服务器(这很有意义,因为他是超级用户),或者如果我们以管理员身份运行IE并提升权限。
有什么建议吗?帮助?有问题吗?
谢谢!
发布于 2011-05-17 22:44:12
好吧,在尝试了所有IIS选项、用户和组帐户、文件系统权限、进程资源管理器等的days之后,我想我们可以正常工作了:
上的Internet Explorer增强的安全配置
祝你成功!无论哪个用户正在使用ASP.NET应用程序,也不管他们是在服务器上运行还是在工作站上运行,日志文件都会按预期写入。
我不知道在服务器上关闭Internet Explorer增强的安全配置是不是“正确”的做法,或者它是否违反了任何最佳实践,但它似乎对我们有效。
有人有什么要补充的吗?
发布于 2015-05-07 19:42:24
我尝试授予所有可能的权限,但仍然无法获得任何日志文件。最后,我遇到了this,它建议更改我的日志文件目录的所有权。我检查了一下,目录所有权设置为SYSTEM。我将其更改为Administrators,并递归地应用此更改。我弹出了IIS,在浏览器中点击了网站上的一个网页,现在我有了日志文件。万岁!
注意:给我提示的事情是检查系统事件日志。我收到了15006个错误,提示“日志文件或目录的所有者C:\inetpub\logfiles\W3SVC1\some.log无效。这可能是因为另一个用户已经创建了日志文件或目录。”
发布于 2011-05-13 00:38:00
我在这个问题上挣扎了一段时间。ApplicationPoolIdentity是Users组的成员,Users组具有有限的访问权限。
在资源管理器中,右键单击您要写入的文件夹,然后转到“安全”。单击高级按钮。您将看到用户具有读取和执行权限,而Users组可能具有也可能没有特殊权限。如果没有,请单击Change Permissions并为用户提供Create files / write data和Create folders / append data的功能。这仅限于此文件夹。我通常使用子文件夹,这样我就不会提供对整个网站的写访问权限。
再次尝试创建日志文件。这是我需要设置的唯一权限才能使其工作。
https://stackoverflow.com/questions/5985397
复制相似问题