2010-08-16 76 views
0

我有一個Silverlight應用程序,它將文件上傳到Sharepoint網站。我在我的箱子和Sharepoint站點中的Sharepoint站點上工作,在其他人的箱子中使用我的Windows帳戶登錄到該站點。但是我無法將文件上傳到不同域中的Sharepoint站點/使用不同的登錄名。Sharepoint文件上傳

用於將文件上傳到不使用我的帳戶的網站。我使用它來獲取憑據並更改端點

CopySoapClient copy = new CopySoapClient(); 
copy.ClientCredentials.UserName.UserName = obj.UserName; 
copy.ClientCredentials.UserName.Password = obj.Password; 
copy.Endpoint.Address = new System.ServiceModel.EndpointAddress(newMaster.Url + "/_vti_bin/Copy.asmx"); 
copy.Endpoint.Contract.Name = "CopyReference.CopySoap"; 
copy.Endpoint.Binding.Name = "basicHttpBinding"; 
copy.Endpoint.Contract.ConfigurationName = "CopySoap"; 

其中obj.UserName也具有DomainName ..例如,域\用戶名。

+0

你得到的錯誤是什麼? – 2010-08-16 18:51:00

+0

我沒有收到任何錯誤。我嘗試上傳它。我收到CopyIntoItems的結果爲0(不是CopyResult)。但我沒有在網站上看到它。我什至嘗試資源管理器查看找到該文件。 – 2010-08-16 19:31:41

回答

4

以下是我過去使用SharePoint Web服務SDK將文檔上傳到SharePoint文檔庫的一段代碼。

var copyClient = new Copy(); 
copyClient .Credentials = credentials; // <-- Create Network Credentials 

var siteUrl = "http://...."; 
var libraryName = "MyDocLibrary"; 
var localFilePath = "..."; 
var fileName = Path.GetFileName(localFilePath); 
var destinationUrl = string.Format("{0}/{1}/{2}", siteUrl, libraryName, fileName); 

var fileBytes = File.ReadAllBytes(localFilePath); 
var info = new[]{new FieldInformation 
         { 
          DisplayName = fileName, 
          Id = Guid.NewGuid(), 
          InternalName = fileName, 
          Type = FieldType.File, 
          Value = fileName 
         }}; 

CopyResult[] results; 
copyClient.CopyIntoItems(destinationUrl, new[] { destinationUrl }, info, fileBytes, out results); 

僅供參考 - 使用舊的學校添加Web引用,而不是新的添加服務引用生成時間:Copy代理。使用舊版ASMX SharePoint網絡服務時,我發現使用舊學校代理更容易。

如果您需要動態更改端點url,則可以在調用CopyIntoItems()方法之前使用以下內容。

var copyServiceUrl = string.Concat(siteUrl, "/_vti_bin/Copy.asmx"); 
copyClient.Url = copyServiceUrl; 
+0

。感謝您的迴應。我在Silverlight應用程序中使用它。所以我需要異步執行此操作,並且需要爲ClientCredentials設置值。我不認爲我可以這樣做。即使我這樣做使用WebService,通過設置NetworkCredentials並同步執行,我懷疑它會在不同的機器上的站點上運行,因爲我正在使用WebService實現它。 – 2010-08-16 19:28:49

0

我知道它實際上以不同的方式工作。當我使用WebBrowser控件導航到我想要上傳的共享點文檔庫/文件夾位置時,我發現該網站並未真正通過身份驗證。由於我使用的是Silverlight,因此我無法使用這個功能,因此我可以在ASP.Net應用程序中使用上傳文件的功能。

所以我手動提示用戶輸入WebBrowser控件內的憑據。現在一切正常。問題在於我無法通過域傳遞證書,或者無法從Silverlight指定域。

PS:我有客戶端訪問策略和跨域。所以它與此無關。 (我所知道的)。

如果我可以得到沒有此解決方法的解決方案。它將不勝感激。

謝謝華萊士再次爲你感興趣。

相關問題