【发布时间】:2010-05-06 21:32:46
【问题描述】:
我有使用 ASP.NET 构建的 Web 服务和使用它们的 ASP.NET 客户端。使用网络服务时,我将如何强制客户端使用 https?
我不想通过在 IIS 中打开 require SSL 来强制整个站点使用 https。
我可以使用 IIS7 URL 重写模块将 http 请求重新路由到 https 吗?
【问题讨论】:
标签: asp.net ssl web-services https
我有使用 ASP.NET 构建的 Web 服务和使用它们的 ASP.NET 客户端。使用网络服务时,我将如何强制客户端使用 https?
我不想通过在 IIS 中打开 require SSL 来强制整个站点使用 https。
我可以使用 IIS7 URL 重写模块将 http 请求重新路由到 https 吗?
【问题讨论】:
标签: asp.net ssl web-services https
不,您不能使用 URL 重写来更改协议。
相反,您可以在 Web 服务中植入检查,如果协议是 HTTP,则抛出异常。
【讨论】:
您是否有机会将您的网络服务添加到虚拟目录并强制虚拟目录使用 SSL?除了按照 Fyodor 的建议检查网络服务调用内部,您还可以在 global.asax 中添加检查 Application_BeginRequest,尽管它不是很整洁:
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);
}
}
【讨论】: