Я работаю над хранимой процедурой CLR, которая вызывает действие контроллера в приложении ASP.NET MVC3, которое использует проверку подлинности Windows (все остальное отключено).Веб-сервер - IIS 7.5, работающий под управлением Windows Server 2008 R2 Standard.Сервер базы данных - SQL Server 2008 R2 Enterprise Edition.Вот код процедуры CLR:
[SqlProcedure]
public static void UpdateModels()
{
Uri uri = null;
HttpWebRequest rq;
HttpWebResponse rsp;
Uri.TryCreate("http://testserver/RPM/Configuration/UpdateModels", UriKind.Absolute, out uri);
rq = (HttpWebRequest)HttpWebRequest.Create(uri);
rq.Method = WebRequestMethods.Http.Get;
rsp = (HttpWebResponse)rq.GetResponse();
}
Мне удалось без проблем развернуть сборку на SQL Server, но при ее запуске появляется следующая ошибка:
Msg 6522, Level 16, State 1, Procedure UpdateModels, Line 0
A .NET Framework error occurred during execution of user-defined routine or aggregate "UpdateModels":
System.Net.WebException: The remote server returned an error: (401) Unauthorized.
System.Net.WebException:
at System.Net.HttpWebRequest.GetResponse()
at StoredProcedures.UpdateModels()
.
Это происходит, когда я вызываю SP из задания агента SQL (запускаемого под моими учетными данными), когда я ВЫПОЛНЯЮ его из окна запроса SSMS (опять же, мои учетные данные) или любым другим методом, который я подумал попробовать.Я являюсь авторизованным пользователем веб-приложения и могу нормально вызывать этот метод контроллера из самого приложения.
Если я изменю URL-адрес на «http://testserver",, он будет работать нормально (конечно,ничего не делать), но если я добавлю «RPM» к URL-адресу, произойдет сбой, поэтому, похоже, проблема связана с самим приложением, а не с сервером или сайтом по умолчанию. Кроме того, если я включаю анонимную аутентификацию, это работаетТаким образом, каким-то образом учетные данные Windows не передаются на сайт. Проверка журнала подтверждает это:
2012-02-23 12:51:33 10.1.1.1 GET /RPM/Configuration/UpdateModels - 80 - 10.2.2.2- 302 0 0 218
Учетные данные не передаются. Я пытался использовать олицетворение в коде CLR SP, но этоне помогло. Как я уверен, это очевидно, я довольно новичок в этом деле и, вероятно, делаю что-то глупое. Если бы кто-то мог поставить меня на правильный курс, я был бы благодарен!
TIA
Джефф