我可以通过SSL使用单独的web.config文件吗?

时间:2012-01-31 19:04:50

标签: asp.net wcf ssl web-config

我首先要说的是我是SSL的新手以及它在ASP.NET / WCF中的工作原理。

我有一个当前没有SSL访问的Web服务,我需要更改它以接受通过http和https的流量。我的web.config引用了使用http的第三方网址。这些URL将返回给客户端,然后通过JavaScript访问。如果使用SSL的网站使用SSL调用我的Web服务,我需要返回这些第三方URL的https版本,以便浏览器不会显示“混合安全性”警告。

有没有人对如何最好地实现这一目标有任何建议?我有一个想法是创建一个处理所有ssl流量的并行站点,但我不确定这在IIS6中是否可行(我们现在正在使用它)。

2 个答案:

答案 0 :(得分:1)

您应该将其保存到一个web.config文件中。我假设您试图避免“此页面包含安全且不安全的内容”警告?

您可以在没有协议的情况下将您的网址存储在web.config文件中(例如www.google.com而不是http://www.google.com)然后当您从代码中使用URL时,将它们从web.config但在显示它们之前,请使用Request IsSecureConnection属性

http://msdn.microsoft.com/en-us/library/system.web.httprequest.issecureconnection.aspx

例如:

((Request.IsSecureConnection)?"https://":"http://") + ConfigurationManager.AppSettings["theURL"]

或者您可以使用javascript(这是Google Analytics的工作方式):

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");  

然后他们只是使用gaJsHost“前缀”来获取资源..

答案 1 :(得分:0)

我不确定您要问的是什么,但只要您没有将IIS站点配置为仅允许SSL流量,您应该没问题。您的服务仍然可以通过SSL和非SSL流量工作。

您应该使用重写规则来确保所有用户都定向到SSL http://www.sslshopper.com/iis7-redirect-http-to-https.html

如果您按照我上面链接的说明在IIS7中使用重写模块,则可以确保访问您网站的任何人都自动重定向到SSL。