0

这是我第一次使用 Sharepoint。这是场景

  1. 我有一个独立的 Web 应用程序
  2. 我也有一个独立的共享点服务器。
  3. 两者都在不同的服务器上。
  4. 我需要将文件从 Web 应用程序上传到共享点

网上找了2种方法

  1. 使用 Sharepoint 提供的网络服务(CopyIntoItems)
  2. 使用 Sharepoint webservice 的 jQuery 库

在网上搜索后,我认为 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 的同一域上调用服务方法“复制”。

4

2 回答 2

0

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

通过客户端对象模型上传文档

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

于 2013-06-19T13:05:27.367 回答
0

问题的解决方案:

问题是“安全令牌网络服务”不起作用,当我们手动运行网络服务时它给出了一些错误。

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

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

于 2013-06-21T14:48:05.880 回答