文件从Web应用程序上载到Sharepoint服务器

时间:2013-06-19 11:09:45

标签: sharepoint sharepoint-2010

这是我第一次使用Sharepoint。这是方案

  1. 我有一个独立的网络应用程序
  2. 我还有一个独立的sharepoint服务器。
  3. 两者都在不同的服务器上。
  4. 我需要将文件从网络应用程序上传到sharepoint
  5. 我在线找到了2种方法,

    1. 使用Sharepoint提供的Web服务(CopyIntoItems)
    2. 使用Sharepoint webservice的jQuery库
    3. 搜索网页后,我认为jQuery部分不起作用(你可以纠正我)。

      我正在寻找一种获取用户名/密码并将pdf文件上传到Sharepoint服务器的方法。以下是我尝试上传但最终错误的C#代码

      public bool UploadFile(string file, string destination)
          {
              bool success = false;
              CopySoapClient client = new CopySoapClient();
      
              if (client.ClientCredentials != null)
                  client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
      
              try
              {
                  client.Open();
      
                  string filename = Path.GetFileName(file);
                  string destinationUrl = destination + filename;
                  string[] destinationUrls = { destinationUrl };
      
                  FieldInformation i1 = new FieldInformation { DisplayName = "Title", InternalName = "Title", Type = FieldType.Text, Value = filename };
                  FieldInformation[] info = { i1 };
                  CopyResult[] result;
                  byte[] data = File.ReadAllBytes(file);
      
                  //uint ret = client.CopyIntoItems(filename, destinationUrls, info, data, out result);
                  uint ret = client.CopyIntoItems(file, destinationUrls, info, data, out result);
      
                  if (result != null && result.Length > 0 && result[0].ErrorCode == 0)
                      success = true;
              }
              finally
              {
                  if (client.State == System.ServiceModel.CommunicationState.Faulted)
                      client.Abort();
      
                  if (client.State != System.ServiceModel.CommunicationState.Closed)
                      client.Close();
              }
      
              return success;
          }
      

      我正在调用上面的函数

      UploadFile(@"C:\temp\uploadFile.txt", "http://spf-03:300/demo/Dokumente").ToString();
      

      我得到的错误:

        

      错误代码:目标无效

           

      错误消息:必须在包含目标URL的同一域上调用服务方法“Copy”。

2 个答案:

答案 0 :(得分:0)

SharePoint 2010有第三个选项,即使用客户端对象模型。客户端对象模型是较大的Sharepoint API的子集,但它确实涵盖了上载文档。以下是博客文章,上面有一个上传示例。

Upload document through client object model

与SharePoint中的大多数内容一样,您需要对其进行身份验证,因此请确定您的网站集是基于表单还是基于声明,然后您应该能够找到适合您情况的示例代码。

答案 1 :(得分:0)

解决问题的方法:

问题是“安全令牌web服务”无法正常运行,并且在我们手动运行Web服务时出现了一些错误。

  

由于内部错误,服务器无法处理请求。   有关错误的更多信息,请打开   IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute   或者从服务器上的配置行为)来发送   异常信息返回给客户端,或者按照开启跟踪   Microsoft .NET Framework 3.0 SDK文档并检查   服务器跟踪日志。

上述例外情况属于通用例外。要查看确切的异常,我们从webservice(link)的web.config文件启用了远程错误查看,并查看了确切的异常。 我们找到了异常和服务的解决方案。之后一切正常。