Получить учетные данные текущего запроса для использования в WebRequest - PullRequest
3 голосов
/ 10 декабря 2008

При доступе к моему сайту пользователь должен ввести свои учетные данные. В основном это простые учетные данные для доступа к каталогу. В определенный момент я проверяю, существует ли определенный файл, который они хотят загрузить, вызывая

WebRequest req = HttpWebRequest.Create(checkUri.AbsoluteUri);
WebResponse res = req.GetResponse();

Хотя я могу получить доступ к checkUri из браузера, я получаю 401 при выполнении вышеуказанной проверки. Я думаю, что я должен установить

req.Credentials

Но я не знаю, где хранятся текущие учетные данные ...

Есть идеи?

- Обновление -

  • Встроенная проверка подлинности Windows: нет
  • Разрешить анонимно: Выкл.
  • Caler: ссылка на страницу того же сайта (GET)
  • Олицетворение: по умолчанию отключено (даже не знаю, как включить его в asp.net mvc)

Ответы [ 3 ]

6 голосов
/ 19 октября 2009

У меня была похожая проблема на сайте, где я использую проверку подлинности с помощью форм, я смог решить эту проблему, используя указанный ниже код в качестве второго ответа в теме.

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
// Add the current authentication cookie to the request
HttpCookie cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
Cookie authenticationCookie = new Cookie(
    FormsAuthentication.FormsCookieName,
    cookie.Value,
    cookie.Path,
    HttpContext.Current.Request.Url.Authority);

req.CookieContainer = new CookieContainer();
req.CookieContainer.Add(authenticationCookie);

WebResponse res = req.GetResponse();
5 голосов
/ 10 декабря 2008

Я думаю, вы хотите это:

req.Credentials = CredentialCache.DefaultCredentials;
1 голос
/ 10 декабря 2008

Вам необходимо включить встроенную аутентификацию Windows.

Я не знаю, что происходит в ASP.NET MVC, но в ASP.NET веб-формах олицетворение включено:

<identity impersonate="true"> 

в web.config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...