如何检查用户尝试访问文件的位置?

时间:2010-11-29 18:08:16

标签: asp.net filesystems file-permissions windows-server-2003

我有一个ASP.NET网站,它使用文件流从远程服务器2003框上的UNC共享中读取PDF图像。

我尝试在网站上加载文件(它只是在网站上嵌入了PDF查看器),但是当我调试代码时,当我尝试访问该文件时,它会引发安全性异常。

  

拒绝访问_________路径。

所以我授予了对ASPNET用户的UNC路径目录的访问权限。 我还授权访问IIS中站点本身为匿名访问指定的用户。那没用。

但是,我在授予“所有人”访问权限并且文件通过时。

所以,我需要知道世界卫生组织正试图访问该文件。假设是ASPNET用户或IIS中的匿名用户设置。两者都没有获得访问权。

我尝试在Server 2003框中设置文件审核,但是当我获得访问被拒绝的异常时,它没有在安全事件日志中记录失败。

2 个答案:

答案 0 :(得分:1)

System.Security.Principal.WindowsIdentity.GetCurrent().Name将获取当前用户名,您可以将此用户输出到屏幕或日志文件以检查它是谁。

ASPNET用户是ASP.NET运行的Windows帐户,这可能不是将要访问该文件的用户。您可能需要明确授予匿名用户访问网络的权限(可能是IUSR_MACHINENAME)。

编辑:

由于您在IIS中启用了匿名访问,因此可以通过修改web.config以使用Forms身份验证来强制您的应用使用匿名访问。搜索 '

<authentication mode="Forms" /> 

<authentication mode="Forms">
  <forms loginUrl="~/Login.aspx" timeout="2880"/>
</authentication>

答案 1 :(得分:0)

我意识到我遇到的问题。 出于某种原因,正是网络服务试图访问该文件而不是ASPNET或IUSR。 我授予了对该目录的NETWORK SERVICE的读访问权,一切都很顺利。 再次感谢。