【问题标题】:ASP.Net unable to see shared folderASP.Net 无法查看共享文件夹
【发布时间】:2008-12-16 19:10:03
【问题描述】:

我在以前没有工作过的网络中编写了一个新应用程序,但遇到了问题。

如果我有以下 C# 代码:

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

在控制台应用程序中,此代码正确执行。

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

在 ASP.Net 应用程序中,如果我添加身份 impersonate="true",我会收到以下错误:Access to the path '\MyServer\MyShare\testing.txt' is denied.

我以前从未遇到过登录失败消息;这是从哪里来的?如果我在服务器上创建一个应用程序并将其写入物理位置,它工作正常(所以安全性很好),似乎共享的安全性不起作用(即使它设置了“所有人”完全写入),或者在服务器级别缺少某些内容,我一般无法查看任何内容。

有人知道我在这里缺少什么吗?我编写了其他类似的应用程序,但从未遇到过这个问题

谢谢!

【问题讨论】:

    标签: asp.net shared-directory windows-security


    【解决方案1】:

    更新:

    所以我认为我发布这个太早了......它在我的本地主机上失败的原因是由于目录被设置为允许匿名访问(所以页面没有模拟;用户是'')。

    它也开始在服务器上工作;但是,那里没有任何改变......我不知道在应用程序的停机/关闭期间是否触发了某些东西,但一切都按预期工作。

    感谢cmets!

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        默认情况下,ASP.NET 应用程序以 YourMachine\IUSR_YourMachine. 的身份运行。您要么必须将共享权限开放给所有人主体(这仍然可能如果机器不在同一个域中,则无法工作),或者以有权访问共享的人身份运行您的 IIS 应用程序。

        您可以通过以下方式更改运行 ASP.NET 应用程序的用户:

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

        迈克

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-21
          • 1970-01-01
          • 2017-09-15
          相关资源
          最近更新 更多