IIS7 托管 API Classic ASP 连接显示“InvalidSecurity 验证消息安全性时发生错误”

IIS7 托管 API Classic ASP 连接显示“InvalidSecurity 验证消息安全性时发生错误”

在 II7 上,我们托管了一个基于 WCF/asp.net 的 API。为了允许经典 asp 应用程序的用户连接到 API,我们必须发布一个我们称为“传输”的版本。此传输版本也是用 asp.net 编写的,它指向相同的程序集,只是安全层不同,以允许经典 asp 进行身份验证。使用传输级别安全性而不是基于消息的安全性。

当使用浏览器加载服务引用时,我可以加载 svcutil.exe ... WDSL 页面。

当使用我的测试 asp 页面从此参考调用 Web 方法时,我得到以下返回结果:

已完成调用 Web 服务。状态 = 内部服务器错误 ResponseText = a:InvalidSecurity验证消息的安全性时发生错误。

这表明身份验证失败。当使用 asp.net 或应用程序 WCF storm 测试联系正常 API 时,一切正常。

API 最近已迁移,似乎有些东西没有正确设置,但我无法解释是什么。

我可以浏览到 svcutil.exe ... WDSL 服务参考,当通过浏览器选择它时,我得到了预期的 XML 响应。

当使用基于消息的安全性的非经典 asp API 出版物时,所使用的用户名和密码有效。

是否可以发布一些可能有助于诊断问题的故障排除技巧,特别是有关传输级别安全故障查找和设置的技巧?

谢谢你,斯科特

答案1

参考_http://theether.net/kb/100127

加载 cmd 提示符 CD 到 C:\Windows\System32\inetsrv 输入:appcmd list config -section:system.webServer/asp 显示以下路径:c:\inetpub\conf\temp\ASP 编译模板 检查路径是否存在(它确实存在) 检查网络服务是否有权限访问“ASP 编译模板” 如果没有,则从 appcmd 执行

icacls“c:\inetpub\conf\temp\ASP 编译模板”/grant“网络服务:(OI)(CI)(M)”

应显示“成功处理 1 个文件”

重新启动应用程序池。

“验证消息安全性时发生 InvalidSecurityAn 错误”问题仍然存在,但事件日志中的“无法创建磁盘缓存子目录....”错误不再发生。

抱歉,再次更新。网络服务权限更改并未解决问题,更改为默认应用程序池解决了问题。

终于找到线索了。检查:

ServiceSecurityAudit 已在服务行为中设置。_http://intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/# IIS 日志(仅显示非特定错误 500。)已启用故障跟踪(还显示错误 500)。自定义错误已关闭友好 IE 消息已关闭在 ProcessMon 上运行的 Asp 客户端和服务器端调试,没有错误。Web.config httpErrors errorMode="Detailed" /> + ServiceSecurityAudit 发现“未将对象引用设置为对象的实例”,因此听起来我们的应用程序有错误。

后续行动(2011 年 6 月 10 日):

服务安全审计记录在此处:

http://intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/

是我们解决这个问题的关键。发现对象引用错误,这表明业务对象和数据访问 dll 不一致。使用 CLASSIC ASP 通过 TRANSPORT AUTHENTICATION 联系 WCF.NET API 时,完全没有出现此错误的迹象,直到在 WCF 部署中的 behavior.config 文件上启用服务安全审计。

  • 解决 *

相关内容