IIS7 で実行されている既存の ASMX Web サービスが多数あり、それらを変更して、すべての要求と応答を HTTPS 経由で行う必要があるようにしたいと考えています。
このサイトでは、PHP やクラシック ASP などの他のページも実行されているため、サイトのルートを変更して HTTPS ページを提供することはできません。
これをASMX サービス (アプリケーション) ごとに設定するにはどうすればよいですか。.asmxまたは 404 エラーを返しますか?
考えと最善のアプローチは?
URL書き換えを試しましたか?
<rewrite>
<rules>
<rule name="Force HTTPS" stopProcessing="true">
<match url="(.*)/ServiceName.asmx" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
より簡単な解決策は、各サービスのコンストラクターに次のコードを含めることです。これにより、各サービスで個別に決定できます。
if (!HttpContext.Current.Request.IsSecureConnection)
{
var sslUrl = HttpContext.Current.Request.RawUrl.Replace("http://", "https://");
Response.Clear();
Response.Write(string.Format("This service requires a SSL connection please go to {0}", sslUrl));
Response.End();
// Or simply redirect
// Response.Redirect(sslUrl);
}
ASMX http://msdn.microsoft.com/en-us/library/aa480190.aspxの代わりに WCF を使用することをお勧めします。
上記の質問について、これで問題は解決しましたか?
http://msdn.microsoft.com/en-us/library/aa302409.aspx
ありがとう...