1

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

如果我有以下 C# 代码:

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

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

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

在 ASP.Net 应用程序中,如果我添加身份 impersonate="true",则会收到此错误:拒绝访问路径 '\MyServer\MyShare\testing.txt'。

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

有谁知道我在这里想念什么?我已经编写了其他类似的应用程序并且从未遇到过这个问题

谢谢!

4

3 回答 3

1

更新:

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

It also started working on the server as well; however, nothing was changed there... I don't know if something was triggered during the app's downtime/shutdown or what, but everything's working as expected.

Thanks for the comments!

于 2008-12-16T19:42:02.110 回答
0

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

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

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

于 2008-12-16T19:14:25.270 回答
0

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

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

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

麦克风

于 2008-12-16T19:18:04.360 回答