代码之家  ›  专栏  ›  技术社区  ›  John

ASP.NET无法查看共享文件夹

  •  1
  • John  · 技术社区  · 16 年前

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

    如果我有以下C代码:

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

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

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

    在ASP.NET应用程序中,如果我添加了Identity Impersonate=“true”,则会得到以下错误: 拒绝访问路径'\myserver\myshare\testing.txt'。

    我以前从未遇到过登录失败消息;这是从哪里来的?如果我在服务器上创建了一个应用程序,并让它写到phsyical位置,那么它工作得很好(因此安全性很好),看起来共享的安全性好像不起作用(即使它将“所有人”设置为完全写入),或者在服务器级别上有一些东西丢失了,在这个级别上,我一般不允许查看任何东西。

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

    谢谢!

    3 回复  |  直到 16 年前
        1
  •  1
  •   John    16 年前

    更新:

    所以我想我发布这个太快了…在本地主机上失败的原因是目录被设置为允许匿名访问(因此页面没有模拟;用户是“”)。

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

    谢谢你的评论!

        2
  •  0
  •   Mitchel Sellers    16 年前

    问题是,将Identity Impersonate设置为false时,ASP.NET工作进程帐户正在尝试写入共享,通常是网络服务或ASPNET帐户。取决于运行的Windows版本。

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

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

        3
  •  0
  •   Mike Marshall    16 年前

    默认情况下,ASP.NET应用程序运行方式为 你的机器 Iurr* 你的机器。 您必须向Everyone主体打开共享的权限(如果计算机不在同一域中,该权限可能仍然不起作用),或者作为有权访问该共享的人运行您的IIS应用程序。

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

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

    迈克

    推荐文章