Я собираю службу WCF REST, работающую в экземпляре веб-сайта IIS 7, и использую схему аутентификации HMAC , которая вставляет токен и 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 без завершающей косой черты , он выполняет перенаправление 307 на uri с косой чертой.Можно подумать, полезно, но проблема в том, что редирект сбрасывает заголовок авторизации.
Все мои классы обслуживания кошерны и отлично работают во всех остальных отношениях. Есть ли способ для меня, чтобы иметь возможность поддерживать этот заголовок авторизации в случае перенаправления? Я подозреваю, что решение будет конфигурация IIS, хотя я думаю, что я мог бы поставить все видымаршрутизации хаков на месте, чтобы забрать версию uri без косой черты.
Обновление:
Я нашел эту статью , которая проверяет это поведение, нона самом деле ничего не дает.