我現在正在處理一個問題,它涉及到從我們的LAN SharePoint服務器將多個PDF文件下載到我們的DMZ。WebClient Credentials SharePoint Intranet
我們正試圖完成的是一個「新聞傳播」類型的應用程序。它所做的是從SharePoint上傳的內容類型中獲取列表數據,然後將它們發佈到我們在DMZ上託管的外部網站,並鏈接到相應的pdf文件。我們使用了Sharepoint必須完成文本佈局的REST API,但我們現在遇到的問題是將上載文檔的.pdf從SharePoint網站複製到DMZ,因此我們可以將它們存儲在緩存中,用戶可以通過href訪問它們。
這是用於訪問SharePoint REST API的代碼。
// Create the connection to sharepoint. Credentials are managed within web.config
SharePointListsREST.SharePointDataContext dc = new SharePointListsREST.SharePointDataContext(new Uri(ConfigurationManager.AppSettings["spUrl"]));
CredentialCache cc = new CredentialCache();
cc.Add(new Uri(ConfigurationManager.AppSettings["spUrl"]), "NTLM", new NetworkCredential(ConfigurationManager.AppSettings["spUser"], ConfigurationManager.AppSettings["spPassword"], ConfigurationManager.AppSettings["spDomain"]));
dc.Credentials = cc;
這很好用,它能夠驗證,抓取數據並顯示它。對於PDF下載功能,我們有這個。
private void GetPDF(string URL, string path)
{
if (System.IO.File.Exists(path))
System.IO.File.Delete(path);
WebClient wc = new WebClient();
CredentialCache cc = new CredentialCache();
cc.Add(new Uri(ConfigurationManager.AppSettings["spUrl"]), "NTML", new NetworkCredential(ConfigurationManager.AppSettings["spUser"], ConfigurationManager.AppSettings["spPassword"], ConfigurationManager.AppSettings["spDomain"]));
wc.Credentials = cc;
wc.DownloadFile(URL, path);
}
這完全不工作,並拋出一個401未授權error.However,如果你去嘗試去http://XX.XX.XX.XX/.../test.pdf
你會被提示輸入用戶名/密碼訪問的PDF文件。輸入我的Windows憑據將使我可以訪問pdf。
我試過使用wc.UseDefaultCredentials = true;
,但它也不起作用。有沒有人有任何想法,我怎麼能得到這個與webclient的工作?
這是IIS的錯誤日誌之一。
2012-07-11 00:56:12 XX.XX.XX.XX GET /Employee+Images/_t/sample.jpg - 80 - 192.168.200.12 - 401 2 5 0
嗯,我們嘗試在web.config中設置模擬,但我們仍然回來了相同的錯誤消息。經過我的經理的一些澄清,我們正在運行IIS 7,我們在日誌中得到的錯誤是401.2(我認爲)。 – 2012-07-11 20:31:09