是否通过HTTP或HTTPS调用WCF服务的方法?

时间:2010-03-07 22:29:15

标签: wcf

假设您有一个可通过HTTP和HTTPS访问的WCF服务,但您只希望某些方法可以通过HTTPS使用 - 如何检查当前请求是否为HTTPS?由于HttpContext是空的,你不能简单地检查HttpContext.Current.Request.IsSecureConnection - 任何其他想法?提前谢谢。

3 个答案:

答案 0 :(得分:5)

考虑到WCF应用程序也可以作为Windows服务托管,根本没有ASP.NET,在这种情况下,没有“安全”与“不安全”之类的东西。这就是为什么WCF不会尝试提供此信息的原因之一。

一种选择是在ASP.NET Compatibility Mode中运行WCF服务,您可以访问HttpContext.Current实例。

然而,我的选择只是为安全操作创建不同的仅SSL服务。我真的认为你无论如何都想要这样做,所以合同是明确的;否则你就不会进行运行时检查,客户可能不知道他们试图使用的方法是不允许的。

Web服务中的“最佳实践”是使这些类型的限制尽可能明确,并且仅通过SSL提供单独的服务到目前为止描述服务限制的最明确方法

答案 1 :(得分:2)

(以@Aaronaught的评论为基础,在Matt Ellen的回答中......)

看起来像是

OperationContext.Current.RequestContext.RequestMessage.Headers.To.Scheme

包含“http”或“https”等(msdn)。

答案 2 :(得分:0)

HTTPS通过HTTP的不同端口提供。假设你知道端口,也许检查就足够了。