ASP.NET使用当前用户权限创建目录

问题描述:

我想从WCF Web服务的网络路径上创建一个目录。此Web服务托管在使用Windows身份验证的站点下。但是,当我尝试使用“Directory.Create”创建文件夹时,我得到一个拒绝访问。当我检查“HttpContext.Current.User.Identity.Name”时,我可以看到我自己的用户帐户,但我想这不是用来创建文件夹的那个,因为当我执行“System.Environment.UserName”时,我看到另一个价值。ASP.NET使用当前用户权限创建目录

我试图把“<identity impersonate="true" />”放在网站的主web.config中,但之后没有任何工作了。

所以我的问题是,是否有可能使用当前登录的用户的权限创建目录?

作为一个精度,我通过AngularJS调用webservice,并且配置了我的“$ httpProvider”来传递凭据(“$hp.defaults.withCredentials = true;”)。

编辑:

我补充说:“<identity impersonate="true" />”放置包含我的web服务,现在该文件夹中的web.config文件,“System.Environment.UserName”包含了正确的凭据,但仍然,我猜访问被拒绝。我从控制台应用程序尝试了相同的命令并且它可以工作。我真的不明白......

EDIT 2

如果我改变了“身份”元素“<identity impersonate="true" username="USERNAME" password="PASSWORD" />”,那么它的工作原理,但我不想以填补这些领域。 ..

感谢

我假设网络文件夹是另一台服务器上,你要么不得不冒充凭证访问,或谁的应用程序池正在运行,这将需要写入权限到该文件夹​​。

我们通常将应用程序池作为IIS中的域帐户运行。你可以根据你的需要量身定制权限(假设两台服务器都在同一个域上,并且不需要以这种方式存储密码,管理你的IIS的人就可以处理)。如果网站只需要写入(但不能读取),则可以给它写入权限但不能读取。

+0

如果它不能解决这类问题,那么编写“'”的目的是什么? – ssougnez

+0

这应该是从IIS传递身份。为了确保您的代码正在以这种方式运行,我会将一个文件写入网站(如果它具有权限)并检查该文件的所有者是谁(因为该所有者将与其尝试写入该文件的人员相同网络共享)。如果你看到类似“网络服务”或“iusr_blablabla”的东西,那么我们知道有些东西出了问题,但至少它给了我们一个方向看。 –

+0

请查阅此处的文档:https://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx在底部有一个blob,其中显示“如果应用程序驻留在UNC共享,ASP.NET始终模仿IIS UNC令牌访问该共享,除非使用配置的帐户。如果您提供明确配置的帐户,ASP.NET将优先使用该帐户而不是IIS UNC令牌。“这将解释你所看到的行为。 –