IIS 7.5 Não é possível acessar o arquivo de código gerenciado
Pergunta
Estou trabalhando em um projeto que é o Click-Once implantado em um servidor da Web do IIS 7.5. Depois de instalar o aplicativo pai (ou seja, configurar o site do IIS), sou capaz de pressionar o URL para o arquivo de configuração do aplicativo Click-Once a partir de uma caixa remota.
No entanto, quando tento fazer a mesma coisa no meu aplicativo (e no aplicativo Stub abaixo), recebo um 401 não autorizado.
Qual é a diferença entre atingir o URL do IE e de um aplicativo .NET?
O próprio arquivo e o próprio diretório têm controle total concedido a todos no servidor da web no momento, e eu sou um administrador na caixa. Estamos usando a autenticação do Windows apenas com NTLM.
Obrigado, -Bob
Aqui está o aplicativo Stub que produz a 401 - não autorizada quando na linha doc.load (). Eu posso atingir o mesmo URL com sucesso do IE e abrir o arquivo ...
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);
}
Solução
Estabelecer o princípio:
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
O XMLDocument não suporta credenciais de passagem ao carregar de um URL. Em vez disso, carregue de um fluxo WebRequest e defina as credenciais na solicitação antes da carga.
WebRequest request = HttpWebRequest.Create(filename);
request.Credentials = CredentialCache.DefaultCredentials;
XmlDocument doc = new XmlDocument();
doc.Load(request.GetResponse().GetResponseStream());