【问题标题】:How to detect which web service protocol an ASP.NET request is using?如何检测 ASP.NET 请求使用的 Web 服务协议?
【发布时间】:2009-04-23 17:18:12
【问题描述】:

我有一个 ASP.NET (1.1) Web 服务,它使用 SoapExtension.ProcessMessage(SoapMessage) 覆盖对客户端进行身份验证,如下所述:

http://www.codeguru.com/columns/experts/article.php/c5479

但是,如果 web.config 未设置为 HttpSoap 是唯一允许的协议,则 ProcessMessage 将永远不会被其他协议上的请求调用,因此会绕过安全性。

无论如何以编程方式确保正在使用 SOAP(而不是依赖 web.config 是正确的)?

谢谢。

【问题讨论】:

  • 我不确定,但如果你喜欢使用 Request.HttpMethod 属性。

标签: web-services security asmx soap-extension


【解决方案1】:

如果它对任何人有用,我最终会检查:

Request.ServerVariables["HTTP_SOAPAction"] != null

这并不理想,但似乎可以解决问题。

【讨论】:

    【解决方案2】:

    查看Request.ServerVariables,特别是SERVER_PROTOCOL 变量。

    http://www.aspcode.net/List-of-RequestServerVariables.aspx

    【讨论】:

    • 无论是否使用 HttpSoap,SERVER_PROTOCOL 都不会包含“HTTP/1.1”吗?
    • 是的。我误读了这个问题,我习惯于在 http 或 https 之间进行检查。您可能仍然会发现该链接很有帮助,但可能不如我希望的那么多。
    【解决方案3】:

    您可以尝试在启动时读取和解析 web.config,看看它是否设置为您想要的方式。

    【讨论】:

      猜你喜欢
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多