最近我正在通过webform从Crystal Reports生成PDF。它失败了,我决定是由c:\ windows \ temp目录上的权限设置引起的。我向网络服务帐户授予对此文件夹的完全访问权限,该文件夹立即修复了该问题。但是,默认情况下,网络服务帐户没有这些权限吗?

Rick Strahl在这里提出这个问题。听起来这样做不应该有任何问题,但Rick并不清楚为什么默认是这样设置的。

Web Server是Windows Server 2003

有帮助吗?

解决方案

现在,默认选项往往更安全。我认为没有任何其他原因。

我和你有同样的问题,在我的环境中只是给了你许可并继续前进。

这篇文章表明它是Crystal Reports的错误,它明确引用%WINDIR%\ Temp而不是使用诸如Path.GetTempPath()之类的API。事实上,我在Windows 2003上的网络服务帐户下运行时看到Path.GetTempPath()返回%WINDIR%\ Temp。

其他提示

有关创建临时文件的发布包含支持使用Windows临时文件夹的注释。

使用网络服务帐户的msdn 文章声明“如果您的ASP.NET应用程序需要在其他位置使用文件或文件夹,则必须专门启用访问权限”。这告诉我temp文件夹的默认限制不是因为临时文件夹被挑选出来,而是默认情况下限制了IIS根文件夹以外的所有其他位置。

%windows%\ temp 不适用于一般的临时和bar。很明显,Crystal Reports正在滥用该目录。当开发人员懒得用管理员帐户以外的任何东西启动他们的计算机时,这种情况会发生很多。

每个用户(包括网络服务)都有自己的临时空间,具有完全访问权限,位于 Documents&设置。获胜者不像CR那样行动,并使用他们自己的临时空间。

简而言之,win \ temp的默认权限没有任何问题。我相信它仅仅适用于Windows的内部工作。 (然后,对于所有相关人员来说,如果该目录从未存在过,那将会好得多。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top