Domanda

Sto lavorando su un progetto che è fare clic su-una volta schierato da un IIS 7.5 web server. Dopo aver installato l'applicazione principale (vale a dire la creazione di sito IIS) sono in grado di colpire l'URL per il click-once file di configurazione dell'applicazione da una scatola a distanza.
Tuttavia, quando si tenta di fare la stessa cosa dalla mia app (e l'applicazione stub sotto), ho un 401 non autorizzato.

Qual è la differenza tra colpire l'URL da IE, e da un .NET app?
Il file e directory stessa hanno il pieno controllo concesso a tutti sul web server in questo momento, e io sono un amministratore sulla scatola. Stiamo utilizzando l'autenticazione di Windows con NTLM.

Grazie, -Bob

Ecco l'applicazione stub che produce il 401 - Unauthorized quando sulla linea di doc.Load (). Posso colpire lo stesso URL con successo da IE e aprire il file ...

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);
    }
È stato utile?

Soluzione

Stabilire il principio:

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

XMLDocument non supporta le credenziali di passaggio durante il caricamento da un URL. Invece di caricare da un flusso WebRequest e impostare le credenziali sulla richiesta prima del carico.

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

XmlDocument doc = new XmlDocument();
doc.Load(request.GetResponse().GetResponseStream());
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top