Pregunta

Estoy trabajando en un proyecto que es Haga clic una vez desplegado desde un IIS 7.5 servidor web. Después de instalar la aplicación principal (es decir, la configuración del sitio IIS) Soy capaz de golpear la url por el clic una vez el archivo de configuración de aplicación a partir de un cuadro de mando a distancia.
Sin embargo, cuando intento hacer lo mismo de mi aplicación (y la aplicación trozo más abajo), aparece un 401 no autorizado.

¿Cuál es la diferencia entre golpear la URL de IE, y desde una aplicación .NET?
El archivo y el directorio en sí tienen un control total concedida a cada uno en el servidor web en el momento, y yo soy un administrador en la caja. Estamos utilizando la autenticación de Windows con NTLM solamente.

Gracias, -Bob

Aquí es la aplicación stub que produce el 401 - No autorizado cuando en la línea doc.Load (). Puedo golpear la misma URL con éxito de IE y abrir el archivo ...

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);
    }
¿Fue útil?

Solución

Establecer el principio:

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

XMLDocument no soporta pasar credenciales cuando se carga desde una dirección URL. En lugar de carga de una corriente WebRequest y establecer las credenciales en la solicitud antes de la carga.

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

XmlDocument doc = new XmlDocument();
doc.Load(request.GetResponse().GetResponseStream());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top