IIS 7 Web サイト インスタンスで実行されている WCF REST サービスをまとめており、トークンと HMAC を Authentication ヘッダーに挿入するHMAC認証スキームを使用しています。典型的なリクエストのヘッダー リストの例は、次のようになります。
GET http://api.mydomain.com/Contacts HTTP/1.1
Authorization: 774F035C-FRTB-4207-DDDD-31BF1534AD96:9h0Whke9Bgi3XSHPo/YSXw==
Content-Type: application/xml; charset=utf-8
Host: api.mydomain.com
Connection: Keep-Alive
.svc ファイルの代わりにルーティングを使用してサービスをセットアップしたので、Global.asax は次のようになります。
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("Users", new WebServiceHostFactory(), typeof(UsersService)));
RouteTable.Routes.Add(new ServiceRoute("Widgets", new WebServiceHostFactory(), typeof(WidgetsService)));
}
問題は、サービスがそのようなルーティングで宣言されている場合、IISが末尾のスラッシュのないWebGet
uriへの呼び出しを受信すると、末尾のスラッシュのある uri への 307 リダイレクトを行うことです。役に立つと思いますが、問題は、リダイレクトが Authorization ヘッダーをダンプすることです。
私のサービスクラスはすべてコーシャであり、他のすべての点でうまく機能します. リダイレクトが発生した場合にその Authorization ヘッダーを維持できるようにする方法はありますか? 解決策はIISの構成になると思いますが、スラッシュなしのバージョンのURIを取得するために、あらゆる種類のルーティングハックを配置できると思います。
更新:この動作を検証するこの記事
を見つけましたが、実際には修正されていません。