Question

Je travaille sur un projet qui est clic une fois déployé à partir d'un serveur Web IIS 7.5. Après avoir installé l'application mère (à savoir la mise en place du site IIS) Je suis en mesure de frapper l'URL pour le fichier de configuration de l'application clic-fois d'une boîte à distance.
Cependant, quand je tente de faire la même chose de mon application (et l'application stub ci-dessous), je reçois un 401 non autorisé.

Quelle est la différence entre frapper l'URL de l'IE, et à partir d'une application .NET
Le fichier et le répertoire lui-même ont le contrôle total accordé à tout le monde sur le serveur web en ce moment, et je suis un administrateur sur la boîte. Nous utilisons l'authentification Windows avec NTLM.

Merci, -Bob

Voici l'application stub qui produit la 401 - Non autorisé lorsque la ligne doc.Load (). Je peux frapper la même URL avec succès à partir d'IE et ouvrez le fichier ...

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);
    }
Était-ce utile?

La solution

Mettre en place le principe:

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

XMLDocument ne supporte pas les informations d'identification qui passe lors du chargement d'une URL. chargement au lieu d'un flux WebRequest et définissez les informations d'identification sur la demande avant que la charge.

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

XmlDocument doc = new XmlDocument();
doc.Load(request.GetResponse().GetResponseStream());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top