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

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

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

Спасибо, -Bob

Вот приложение-заглушка, которое создает 401 - Неавторизовано в строке 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);
    }

1 Ответ

1 голос
/ 07 апреля 2010

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

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());
...