1

我们正在配置门户以使用 ISA 服务器作为我们的前端安全提供程序。
所以我们使用的是ISA Server 2006 SP1。

不幸的是,当我们通过 ISA Server 访问 .net 应用程序时,它们是第一次被访问。
即它们尚未编译,出现以下错误:
错误代码:500 内部服务器错误。参数不正确。(87)

在 ISA 监控日志中,这显示:

失败的连接尝试
日志类型:Web 代理(反向)
状态:87 参数不正确。

一旦应用程序被编译,错误就永远不会出现。
有谁知道如何解决这个问题,所以该网站第一次正常工作?

一些附加信息:

  • 访问的网站在 windows server 2008 64 位标准版上运行,并且出现在 Sharepoint 以及标准 .net 网站上。
  • ISA 服务器在 Windows server 2003 R2 SP2 标准版上运行
  • windows server 2008 盒子上的防火墙允许所有访问。(排除这种情况。)
  • IIS 日志或防火墙日志中没有出现任何异常。
4

3 回答 3

0

您可以预先编译网站。这更像是一种解决方法。

您是否尝试过清除 ASP.NET 的编译输出目录?你可能在那里有一些冲突。

%SystemRoot%\Microsoft.NET\Framework\versionNumber\Temporary ASP.NET Files
于 2009-04-15T04:29:14.513 回答
0

此问题是由 ISA 服务器中的身份验证委派值设置为 NTLM 而 IIS 设置为接受 Windows 身份验证引起的。这种组合在我的环境中似乎是一个问题。

将其更改为基本身份验证或任何其他有效组合都可以正常工作,因此我将使用不同的身份验证委托设置。

于 2009-04-15T10:45:21.927 回答
0

我今天遇到了同样的问题(ISA 2006/sp1 通过 ISA HTML Form Auth 发布 SharePoint,通过 NTLM 身份验证)并花了几个小时调试它。你是对的,编译触发它的页面是必要的,只有 IISRESET 会导致问题;应用程序池回收不会。基本身份验证有效,但 NTLM 无效。请继续阅读以进行修复。

如果您查看 IIS 日志,您会发现那里有些奇怪,IIS 对特定 HTTP 请求的 401 回复并带有一点提示:

... GET /auth.aspx - 80 - ... Mozilla/4.0+(compatible;...) 401 1 2148074254 734

请注意错误代码 2148074254 ( 0x8009030e SEC_E_NO_CREDENTIALS )。在常规的质询/响应交换中,这应该是“5”。

这导致我走上了一些更曲折的调试路径,最终我发现问题归结为默认启用 IIS 7 的内核模式身份验证。如果你关闭它:

%windir%\system32\inetsrv\appcmd set config -section:windowsAuthentication -useKernelMode:false

...问题消失了。这篇文章中有足够的信息供任何人挖掘其技术原因,所以我不会在这里重复它。

-Oisin

于 2010-06-09T00:31:25.207 回答