2010-04-07 76 views
0

我正在從IIS 7.5 Web服務器上單擊一次部署項目。安裝父應用程序(即設置IIS站點)後,我可以從遠程框中點擊一次性應用程序配置文件的URL。然而,當我嘗試從我的應用程序(和下面的存根應用程序)做同樣的事情時,我得到了401未授權的應用程序。IIS 7.5無法從託管代碼訪問文件

從IE瀏覽器和.NET應用程序打網址有什麼區別?
目前,文件和目錄本身具有授予網絡服務器上所有人的完全控制權,並且我是包裝盒上的管理員。我們僅將Windows身份驗證與NTLM一起使用。

謝謝, -Bob

這裏是存根的應用程序,產生401 - 未授權上doc.Load()線時。我可以從IE瀏覽器成功擊中同一個網址,打開文件...

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); 
    } 

回答

1

確立的原則:

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

的XMLDocument不支持從URL加載時傳遞憑據。而是從WebRequest流加載,並在加載之前在請求上設置憑據。

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

XmlDocument doc = new XmlDocument(); 
doc.Load(request.GetResponse().GetResponseStream()); 
+0

這個伎倆!注意到我沒有這樣做,在從應用程序的後續webService調用...必須在CredentialCache.DefaultCredentials設置憑據以及。 – Bob 2010-04-07 19:41:29