Я столкнулся с поведением с HttpWebRequest, которое, по моему мнению, предназначено, но, так как я не смог найти источник, который определенно говорит, что это правильно, я подумал, что опубликую его как вопрос и посмотрю, еслистолкнулся с этим и / или может убедиться, что это правильно.
Для начала у меня есть приложение MVC3, работающее на IIS 7.5.Он имеет 1 контроллер и поддерживает 1 метод сообщения.У меня есть Windows Auth и ASP.NET Олицетворение включены в IIS.Идея приложения MVC3 заключается в том, чтобы иметь простой сервис, который можно использовать для регистрации информации из различных клиентских приложений (консольных приложений, silverlight, asp.net, AJAX и т. Д.).Служба использует свойство User из контроллера, чтобы также регистрировать, кто именно отправил данные в эту службу.
Чтобы упростить обработку приложений-потребителей, я создал несколько клиентских библиотек Silverlight,DotNet и библиотека js.
Все сработало, как и ожидалось, за исключением случаев использования библиотеки DotNet в другом приложении MVC3.Для библиотеки DotNet я использую HttpWebRequest и асинхронные методы (Begin / EndGetRequestStream) / (Begin / EndGetResponse) для отправки запроса.Я также устанавливаю .Credentials для запроса в CredentialCache.DefaultCredentials, но когда приложение ведения журнала начинает обработку запроса из другого приложения MVC3, оно отображает пользователя как учетную запись службы пула приложений, из которого было получено сообщение.
Когда я нашел это, я добавил синхронную версию сообщения в библиотеку DotNet и обнаружил, что служба ведения журнала использует мои личные учетные данные.
Я предполагаю, что HttpWebRequest может использовать разные DefaultCredentials в зависимости отв контексте, в котором он используется.Поскольку это asp.net и вызывается асинхронный метод запроса, мой библиотечный код, возможно, даже не завершился до того, как клиентское приложение MVC3 вернуло ответ.
То, что я не смог найтиесли это определенно так или нет.Если у кого-то есть ответ и / или статья, которая может указать мне правильное направление, я был бы очень признателен.
Заранее спасибо