我使用ASP.NET和ASP.NET客户端构建Web服务。在使用Web服务时,如何强制客户端使用https?
我不想强制整个网站通过在IIS中启用require SSL来使用https。
我可以使用IIS7 URL重写模块将http请求重新路由到https吗?
答案 0 :(得分:3)
不,您不能使用URL重写来更改协议。
相反,如果协议是HTTP,您可以在Web服务中植入支票并抛出异常。
答案 1 :(得分:3)
您是否有机会将您的web服务添加到虚拟目录并强制虚拟目录使用SSL?除了在Fyodor建议的内部检查webservice调用之外,您还可以在Application_BeginRequest
中添加global.asax
中的支票,尽管它不是很整洁:
void Application_BeginRequest(object sender, EventArgs e)
{
if (!Request.IsSecureConnection && Request.Url.ToString().Contains(".asmx"))
{
string secureUrl = Request.Url.ToString().Replace("http:", "https:");
Response.Redirect(secureUrl);
}
}