IIS 7.5 non può file di accesso da codice gestito
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);
}
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());