我已经运行到wierdest问题,我希望一些ASP.NET专家能给我一些线索,这是怎么回事。集成Windows身份验证打破File.Exists
我有一个运行在IIS 6.0上的ASP.NET网站。在它上面,我有一个.asmx web服务。在.asmx web服务中,我使用System.IO.File.Exists()
来检查网络共享上是否存在文件。该网站使用模拟。
这里有大量的踢球者:如果我设置IIS运行使用基本身份验证的网站,该File.Exists行返回True。如果我将它设置为集成Windows身份验证,它将返回False。我没有改变任何东西,我可以来回改变,并发生完全相同的事情。我记录电话之前的一些信息File.Exists()
而事实上,无论是User.Identity.Name
和System.Security.Principal.WindowsIdentity.GetCurrent().Name
返回完全相同的名称,无论设置(我自己的帐户,这显然有获得我正在寻找的文件)。
我会后的事情我做过尝试,但老实说,你能在这种情况下,其中一个设置不应该影响这个问题的问题尝试。我试图关闭模拟,并且这也使得File.Exists()
调用返回True(由于我自己的用户具有远高于运行appPool的帐户的权限,因此我的思想开始流失)。
任何想法,我可以研究解决这个问题?
不幸的是,我不能设置这种代表团,因此我们必须使用基本身份验证,至少不会解决问题File.Exists运行。不幸的是,后台问题是我无法在其他服务器(具有文件共享的相同服务器)上调用Web服务,因为我获得了401未授权。不幸的是,基本身份验证并不能解决这个问题,即使它看起来也像委托问题一样。 – Tobberoth
没有Kerberos委托,您无法将您的凭据传递给另一台IIS服务器。这是IIS的局限性,也称为双跳问题。 – NoviceProgrammer
@tobberoth,您可以在基本身份验证会话中找到密码,因为它是会话变量之一。这应该使您能够设置显式的基本认证连接到其他Web服务。 – Ben