2010-08-16 95 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:我有客户端访问策略和跨域。所以它与此无关。 (我所知道的)。

如果我可以得到没有此解决方法的解决方案。它将不胜感激。

谢谢华莱士再次为你感兴趣。

相关问题