我们无法将ASP.NET应用程序迁移到Windows Server 2008 R2 x64和IIS7.5。问题是我们的ASP.NET应用程序写入日志文件,并且没有写入这些日志文件。应用程序编写日志文件的唯一方法是,如果我以本地管理员用户身份登录服务器,或者右键单击并以管理员身份运行IE,这对我们来说都不是可接受的解决方案。
我们的平台是: Windows Server 2008 R2 x64(UAC设置是默认设置) IIS7.5 ASP.NET 4.0(使用Windows身份验证和模拟,都在web.config中)
我们的应用已安装到: d:[APPNAME] [appnameWebSite](所有.aspx,.dll等文件都在这里) \ Log(应用程序尝试将日志文件写入此文件夹)
在服务器上: 创建新的App Pool(名称:[appname],.NET 4.0,Managed Pipeline Mode:Classic,Identity:ApplicationPoolIdentity,Load User Profile:False,所有其他属性都是默认值) 创建指向D:[appname] [appnameWebSite]的IIS应用程序,并将其添加到新的应用程序池(完全信任级别) 在本地Administrators组中拥有域用户
使用上面列出的所有配置和默认设置,ASP.NET应用程序将不会写入日志文件。该应用似乎在浏览器中正常工作,但没有log.txt文件。
为了尝试“修复”这个问题,我们尝试了很多东西: 尝试的应用程序池设置:管理的管道模式:集成 尝试的应用程序池设置:标识:NetworkService 尝试的应用程序池设置:身份:LocalSystem 尝试的应用程序池设置:加载用户配置文件:True Gave Users将对文件系统的完全控制权分配给我们的应用程序文件夹结构(尝试了appname文件夹,仅尝试了Log文件夹,仅尝试了appnameWebSite和Log文件夹) 将IIS AppPool [appname](匹配新的App Pool)用户完全控制到我们的应用程序文件夹结构的文件系统(尝试了appname文件夹,仅尝试了Log文件夹,仅尝试了appnameWebSite和Log文件夹)
这些都没有帮助。同样,应用程序运行正常,只是没有创建日志文件。
如上所述,在应用程序运行时创建日志文件的唯一方法是,如果我们使用本地管理员帐户登录服务器(这是有道理的,因为他是超级用户)或者我们以管理员身份运行IE提升特权。
有什么建议吗?救命?有问题吗?
谢谢!
答案 0 :(得分:9)
我尝试授予每个权限,但仍然没有获取任何日志文件。最后我遇到了this,它建议更改我的日志文件目录的所有权。我检查了,目录所有权设置为SYSTEM。我将其更改为管理员并递归应用更改。我弹出IIS,在浏览器中从网站点击一个网页,现在我有了日志文件。万岁!
注意:让我失望的是检查系统事件日志。我得到15006错误说"日志文件或目录C:\ inetpub \ logfiles \ W3SVC1 \ some.log的所有者无效。这可能是因为另一个用户已经创建了日志文件或目录。"
答案 1 :(得分:5)
好吧,在 天 尝试每个IIS选项,用户和组帐户,文件系统权限,Process Explorer等之后,我认为我们已经开始工作了:< / p>
成功!无论用户使用ASP.NET应用程序,无论是在服务器本身还是从工作站上运行,都会按预期编写日志文件。
我不知道在服务器上关闭Internet Explorer增强安全配置是否是正确的&#34;要做的事情或是否违反任何最佳做法,但它似乎对我们有用。
有没有人要添加什么?
答案 2 :(得分:3)
我挣扎了一段时间。 ApplicationPoolIdentity是Users组的成员,Users组具有有限的访问权限。
在资源管理器中,右键单击要写入的文件夹,然后转到“安全”。单击“高级”按钮。您将看到用户具有“读取”和“执行”权限,“用户”组可能具有或不具有“特殊”权限。如果没有,请点击更改权限,让用户能够创建文件/写入数据和创建文件夹/附加数据。这仅限于此文件夹。我通常使用子文件夹,因此我不提供对整个网站的写访问权。
再次尝试创建日志文件。这是我需要设置的唯一权限才能使其正常工作。
答案 3 :(得分:0)
对我来说,诀窍是为CompanyModel.update(
{ [`${companyId}.results._id`]: resultsId },
{ $set: { [`${companyId}.results.$.visible`]: false }}
)
和SYSTEM
授予写入权限,不仅对日志文件夹本身,而且对路径中的每个文件夹都具有权限。这不是权限通常在Windows中如何工作的方式,但是IIS似乎对此非常重视。并不是有充分的理由从一开始就将这两个ACL删除。
如果您怀疑这是问题所在,请检查Windows日志/系统下的事件日志。此问题表现为来自源HttpEvent的错误条目,并显示为“无法创建日志文件C:\ path \ to \ logs \ W3SVC1 \ u_extend1.log。请确保日志记录目录正确并且此计算机具有对该目录。”
P.S。对于IIS 10来说确实如此,但也可能适用于其他版本。