经典asp“验证消息的安全性时发生错误。” iis7传输级安全性

时间:2011-08-05 11:20:09

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

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

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

当使用我的测试asp页面从此引用调用web方法时,我得到以下内容:

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

这表明身份验证失败。当使用asp.net或应用程序WCF风暴测试联系普通API时,一切运行良好。

API最近已迁移,看起来似乎没有正确设置,但我无法解释什么。

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

当使用基于消息的secuirty的API的非经典asp公开时,使用的用户名和密码可以正常工作。

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

谢谢 斯科特

编辑添加以下更新:

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

我的测试页错误:ResponseText = a:验证邮件的安全性时发生InvalidSecurityAn错误。

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

注意:在TRANSPORT和V3上定义虚拟目录。 V3使用.net工作正常,而不是经典的asp进行身份验证。

活动日志: 由于以下错误,应用程序池“传输”的模板持久高速缓存初始化失败:无法为应用程序池创建磁盘高速缓存子目录。数据可能包含其他错误代码。

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

_http://theether.net/kb/100127

1 个答案:

答案 0 :(得分:1)

REF _http://theether.net/kb/100127

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

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

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

重新启动应用池。

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

对不起另一个更新。网络服务权限更改DID无法解决问题,更改为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 =“Detailed”/> +
  9. ServiceSecurityAudit发现我“未将对象引用设置为对象的实例”,所以听起来我们的应用程序有错误。


    跟进(2011年8月17日):

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

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

    是我们解决此问题的关键。揭示了对象引用错误,指出Business Objects和Data Access dll不对齐。使用CLASSIC ASP使用TRANSPORT AUTHENTICATION联系WCF.NET API,在WCF部署中的behaviour.config文件上启用Service Security Audit之前,绝对没有任何迹象表明此错误。

    *已解决*