远程共享上的 IIS6 虚拟目录 500 错误

远程共享上的 IIS6 虚拟目录 500 错误

我们的服务器位于域中的服务器场中。我们称之为 LIVE。

我们的开发人员计算机位于完全独立的公司域中,相距数英里。我们称之为 CORP。

我们有一个大型中央存储单元 (unix),用于存放服务器场中许多 Web 服务器所需的图像和其他媒体。IIS 应用程序池以(假设)LIVE\MediaUser 身份运行,并使用这些凭据连接到中央存储共享作为虚拟目录,检索图像,并将它们作为每个服务器上的本地图像提供。

问题在于发展之中。

在我的开发机器上。我以 CORP\MyName 身份登录。我的 IIS 6 应用程序池作为网络服务运行。我无法以 LIVE 域中的用户身份运行它,因为我的机器没有(也不能)加入该域。

我尝试创建一个虚拟目录,将其指向同一个网络目录,单击“连接为”,取消选中“验证对网络目录的访问时始终使用经过身份验证的用户的凭据”复选框,以便我可以输入登录信息,输入 LIVE\MediaUser 的凭据,单击“确定”,验证密码等。

这不起作用。我从 IIS 收到“HTTP 错误 500 - 内部服务器错误”。

IIS 日志文件报告 sc-status = 500、sc-substatus = 16 和 sc-win32-status = 1326。

文档说这意味着“UNC 授权凭据不正确”并且 Win32 状态意味着“登录失败:未知用户名或密码错误”。

如果它接近准确,那就太好了。我仔细检查了一遍。尝试了多个已知良好的登录。IIS 管理器允许我在其窗口中查看文件树,只有浏览器会将我踢出。

我甚至尝试进入虚拟目录的“目录安全”选项卡,在“身份验证和访问控制”下,尝试使用相同的 LIVE 域用户名作为匿名访问凭证。但没成功。

我不想在虚拟目录中运行任何 ASP、ASP.NET 或其他动态程序。我只希望 IIS 能够加载静态图像、css 和 js 文件。

如果有人有一些好主意我将不胜感激!

答案1

我以前也遇到过这个问题。这里有两个建议,但都不理想,甚至可能不适用于你的环境:

  1. 将文件存储在非域服务器上的共享中。这样,实时服务器和开发服务器都可以访问它们。

  2. 运行日常作业,将必要的文件从实时服务器复制到开发服务器(通过 FTP、FTPS 或其他方式)。

答案2

我同意不将 CORP 计算机加入 LIVE 域,但是有什么原因导致您无法在它们之间建立单向信任?基本上,LIVE 需要能够验证 CORP\user,或者 CORP 需要能够成功传递 LIVE\user 凭据(如果它不了解该域,它就无法成功传递凭据,尽管 IIS 6 的管理控制台没有明确说明这一点)。

本质上,域必须相互了解,这样 AD 才能发挥作用。UNC 共享不会告诉您它未通过验证(这将是 HTTP 400 类错误)。DEV 服务器会告诉您(通过 500.16)它无法为您提供给它的凭据创建令牌,因为它不知道 LIVE 域是什么,因此 kerberos 无法为其创建令牌。

TechNet 上关于 HTTP 500.16 的信息:...

为此,IIS 使用 Windows 登录 API 来获取安全令牌,可以在访问远程存储内容时使用该令牌模拟安全身份。

答案3

我已经使用域用户解决了这个问题,该域用户被允许访问域控制器上的远程共享,它工作正常。

真挚地

答案4

确保您用于访问共享文件夹的用户帐户(例如 LIVE\MediaUser)具有“作为服务登录”和“从网络访问此计算机”的权限。

您可以在托管共享文件夹的服务器上进行设置,位置如下:

管理工具 -> 计算机管理 -> 本地安全设置 -> 本地策略 -> 用户权限分配

相关内容