2008-12-16 111 views
1

我已经写了一个新的应用程序在我以前没有工作过的网络中,并且遇到了问题。ASP.Net无法看到共享文件夹

如果我有下面的C#代码:

FileStream fs = File.Create(@"\\MyServer\MyShare\testing.txt"); 
fs.Close(); 

在一个控制台应用程序,这个代码能够正确执行。

在ASP.Net应用程序中,我收到此错误:登录失败:未知的用户名或密码错误。

在ASP.Net应用程序,如果我在身份冒充添加=“真”,我得到这个错误:访问路径“\ MyServer的\ MyShare中\ testing.txt”被拒绝。

我从来没有遇到过登录失败的信息;这是从哪里来的?如果我在服务器上创建一个应用程序,并将它写入物理位置,它可以正常工作(因此安全性很好),似乎共享的安全性不起作用(即使设置了“Everyone”完全写入),或者在服务器级别缺少一些我一般不能查看的东西。

有没有人知道我在这里失踪?我写了其他应用程序做了类似的事情,从来没有遇到过这个问题

谢谢!

回答

1

更新:

所以我觉得我张贴了这个太早......它是失败在我的本地主机的原因是由于目录被设置为允许匿名访问(所以页面不是冒充;用户是'')。

它也开始在服务器上工作;然而,在那里没有任何改变...我不知道在应用程序的停机/关机过程中是否触发了什么,或者是什么,但一切都按预期工作。

感谢您的意见!

0

问题是,如果身份模仿设置为false,ASP.NET工作进程帐户正在尝试写入共享,通常是NETWORK SERVICE或ASPNET帐户。取决于您正在运行的Windows版本。

将impersonate设置为true,而不指定用户名或密码将使用当前用户身份验证尝试并提出请求。

您将需要授予工作进程帐户权限,这很可能是不可能的。或者B创建应用程序可以模拟的特定帐户,然后在身份标记中的web.config中指定凭证。

0

默认情况下,ASP.NET应用程序运行为YourMachine \ IUSR_ YourMachine。您必须将共享上的权限打开到Everyone主体(如果这些机器不在同一个域中,仍然可能无法运行),或者将您的IIS应用程序作为有权访问共享的人运行。

您可以更改ASP.NET应用程序下运行由用户:

。开管理工具 - > Internet信息服务然后右键单击包含应用程序的网站或虚拟目录,然后单击属性。选择目录安全选项卡并单击编辑。最后,在匿名访问部分中键入有权访问共享的用户的用户名和密码。

迈克