IIS 7.5 не может получить доступ к файлу из управляемого кода

Я работаю над проектом, который развертывается одним кликом с веб-сервера IIS 7.5. После установки родительского приложения (т. е. настройки сайта IIS) я могу нажать URL-адрес файла конфигурации приложения с однократным щелчком из удаленного окна.
ОДНАКО, когда я пытаюсь сделать то же самое из своего приложения ( и приложение-заглушку ниже), я получаю 401 Unauthorized.

В чем разница между переходом по URL-адресу из IE и из приложения .NET?
В настоящий момент полный доступ к файлу и каталогу предоставляется всем на веб-сервере, а я являюсь администратором этого устройства. Мы используем проверку подлинности Windows только с NTLM.

Спасибо, -Боб

Вот приложение-заглушка, которое выдает ошибку 401 — Unauthorized в строке doc.Load(). Я могу успешно нажать тот же URL-адрес из IE и открыть файл...

static void Main(string[] args)
    {
        Console.WriteLine("Config Test");
        string filename = "http://dev-rs/myClient/myClickOnce/myApp.config.xml";
        Console.WriteLine(filename);
        XmlDocument doc = new XmlDocument();
        doc.Load(filename);
        Console.WriteLine("Loaded");
        Console.WriteLine("Inner Text : " + doc.InnerText);
    }

person Bob    schedule 07.04.2010    source источник


Ответы (1)


Установите принцип:

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

XMLDocument не поддерживает передачу учетных данных при загрузке с URL-адреса. Вместо этого загрузите из потока WebRequest и установите учетные данные в запросе перед загрузкой.

WebRequest request = HttpWebRequest.Create(filename);
request.Credentials = CredentialCache.DefaultCredentials;

XmlDocument doc = new XmlDocument();
doc.Load(request.GetResponse().GetResponseStream());
person Mark Lindell    schedule 07.04.2010
comment
это сделало трюк! Заметил, что я не делал этого при последующем вызове веб-службы из приложения... также должен был установить учетные данные с помощью CredentialCache.DefaultCredentials. - person Bob; 07.04.2010