4

我在使用 ASP.NET 访问远程服务器上的文本文件时遇到问题。ASP.NET 1.1 应用程序在 Server 2003 上运行,使用模拟和请求者的 Windows 凭据。客户端、网络服务器和远程服务器都在同一个域中,用户有权访问文本文件。用户可以通过 UNC 共享从他们的机器上打开文本文件。当用户运行直接在服务器上登录的站点时,它工作正常。但是,当用户在他们的机器上尝试时,它不起作用。应如何设置模拟以使其正常工作?

编辑:该应用程序的其他功能工作正常,它只是访问不起作用的远程文件。

4

3 回答 3

4

听起来您遇到了多跳问题。使用集成身份验证时,您可以从浏览器向 IIS 进行身份验证。但是,您不能对域中的任何其他计算机进行身份验证。原因是使用标准凭据,他们无法验证您的身份。


我熟悉两种主要的解决方法:

  1. 实施 Kerberos,这些证书允许您进行更高级的身份验证,并允许多个网络跃点。
  2. 使用 LogonUser win32 api 重新模拟您的用户(需要密码)。
于 2009-02-05T21:10:14.413 回答
0

在 IIS 中,至少需要在应用程序文件夹上取消选中匿名和基本身份验证。您可能想要检查应用程序文件夹本身,而不仅仅是根文件夹。可能还有其他配置选项,但这是“唾手可得”的选项。

于 2009-02-05T20:52:49.067 回答
0

作为测试,请在模拟标记中指定用户名和密码,以强制应用程序始终模拟为您知道有权访问该文件的用户。

如果应用程序现在可以访问文本文件,您就会知道这是将用户的凭据传输到服务器。

如果应用程序仍然无法访问文本文件,则凭据不是问题,而是存在服务器配置问题。

于 2009-02-05T21:03:46.640 回答