asp.net - 经典 asp "An error occurred when verifying security for the message."iis7 传输级安全

标签 asp.net api iis-7 asp-classic transport-security

在 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 响应。

使用基于消息的安全性的 API 的非经典 ASP 公开时,所使用的用户名和密码有效。

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

谢谢 斯科特

编辑添加以下更新:

尝试使用默认应用程序池和新的应用程序池,但同样的问题仍然存在。

我的测试页错误:ResponseText = a:InvalidSecurity验证消息安全性时发生错误。

IIS日志显示: v3/transport/testclassicasptransportwcfservice.asp ( 200 0 0 ) (即 iis 200) /V3/Transport/DeviceService.svc/DeviceService (500 0 0)(即 iis 错误 500)

注意:TRANSPORT 和 V3 上定义的虚拟目录。 V3 使用 .net(而不是传统的 asp 进行身份验证)可以正常工作。

事件日志: 由于以下错误,应用程序池“传输”的模板持久缓存初始化失败:无法为应用程序池创建磁盘缓存子目录。数据可能有额外的错误代码。

此引用似乎建议修复,但“appcmd”中的许多 DIR 路径和引用并不存在。

_http://theether.net/kb/100127

最佳答案

引用http://theether.net/kb/100127

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

    icacls "c:\inetpub\conf\temp\ASP Compiled Templates" /grant "NETWORK SERVICE:(OI)(CI)(M)"
    

    应为“已成功处理 1 个文件”

    重新启动应用程序池。

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

抱歉,又更新了一次。网络服务权限更改没有解决问题,更改为 DEFAULT APP POOL 解决了问题。

终于取得领先了。检查:

  1. ServiceSecurityAudit 在服务行为中设置。引用http://intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/#
  2. IIS 日志(仅显示非特定错误 500。)
  3. 已启用故障跟踪(还显示错误 500)。
  4. 自定义错误已关闭
  5. 友好的 IE 消息已关闭
  6. Asp 客户端和服务器端调试
  7. ProcessMon 正在运行,没有错误。
  8. Web.config httpErrors errorMode="详细"/> +

ServiceSecurityAudit 发现“对象引用未设置到对象实例”,因此听起来我们的应用程序存在错误。

<小时/>

跟进(2011年8月17日):

此处记录了服务安全审核:

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

这是我们解决这个问题的关键。发现了对象引用错误,该错误表明业务对象和数据访问 dll 未对齐。使用 CLASSIC ASP 使用传输身份验证联系 WCF.NET API,在 WCF 部署中的 Behaviour.config 文件上启用服务安全审核之前,绝对没有任何迹象表明此错误。

关于asp.net - 经典 asp "An error occurred when verifying security for the message."iis7 传输级安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6955429/

相关文章:

asp.net - 最大化网站的并行下载

java - 如何在 Java 中使用 Restful Web 服务(Restful API)

Python c api 和 __add__ 调用

python - 如何解决这个错误???引发HTTPError(req.full_url,代码,msg,hdrs,fp)HTTPError : Forbidden

c# - WCF 并发?

asp.net - 无法通过附加进程 w3wp 在 IIS7 上调试 asp.net

asp.net - 在 IIS7 中将网站重新启动到 'refresh' CaSTLe Windsor 配置的最佳方法

c# - 实现 zendesk 单点登录

asp.net - 我可以在 asp.net 4.0 站点中托管 .net 2.0 虚拟目录吗?

c# - 带有验证器的 FileUpload 的附加 onchange 事件