2010-05-19 76 views
0

在我的应用程序正在将文件上传到SharePoint 2007我使用帮助! WebClient.UploadFile()抛出异常,同时上传文件到SharePoint

using (WebClient webClient = new WebClient()) 
{ 
webClient.Credentials = new NetworkCredential(userName, password); 
webClient.Headers.Add("Content-Type", "application/x-vermeer-urlencoded"); 
webClient.Headers.Add("X-Vermeer-Content-Type", "application/x-vermeer-urlencoded"); 
String result = Encoding.UTF8.GetString(webClient.UploadData(webUrl + "/_vti_bin/_vti_aut/author.dll","POST", data.ToArray())); 
} 

代码运行successfully..but了一些文件,它抛出异常

基础连接已关闭: 连接被关闭 意外。在在 System.Net.WebClient.UploadData System.Net.WebClient.UploadDataInternal(URI 地址,字符串方法,字节[]数据, 的WebRequest &请求)(URI 地址,字符串方法,字节[]数据)
在 System.Net.WebClient.UploadData(字符串 地址,字符串的方法,字节[]数据)

我做了什么错什么想法?

我使用VS-2008 2.0

+0

可能问题出在SharePoint服务器上。 – 2010-05-19 19:44:00

回答

1

这里是我的功能,我用它来上传文件在同一时间元数据:

public static bool Upload(string webUrl, string documentName, byte[] bytes, Dictionary<string, object> metaInfo, out string result) 
{ 
    string putOption = "overwrite,createdir,migrationsemantics"; // see http://msdn2.microsoft.com/en-us/library/ms455325.aspx 
    string comment = null; 
    bool keepCheckedOut = false; 
    string method = "method=put+document%3a12.0.4518.1016&service_name=%2f&document=[document_name={0};meta_info=[{1}]]&put_option={2}&comment={3}&keep_checked_out={4}\n"; 
    method = String.Format(method, documentName, EncodeMetaInfo(metaInfo), putOption, HttpUtility.UrlEncode(comment), keepCheckedOut.ToString().ToLower()); 
    List<byte> data = new List<byte>(); 
    data.AddRange(Encoding.UTF8.GetBytes(method)); 
    data.AddRange(bytes); 
    try 
    { 
     using (WebClient webClient = new WebClient()) 
     { 
      webClient.Credentials = CredentialCache.DefaultCredentials; 
      webClient.Headers.Add("Content-Type", "application/x-vermeer-urlencoded"); 
      webClient.Headers.Add("X-Vermeer-Content-Type", "application/x-vermeer-urlencoded"); 
      result = Encoding.UTF8.GetString(webClient.UploadData(webUrl + "/_vti_bin/_vti_aut/author.dll", "POST", data.ToArray())); 
      if (result.IndexOf("\n<p>message=successfully") < 0) 
       throw new Exception(result); 
     } 
    } 
    catch (Exception ex) 
    { 
     result = ex.Message; 
     return false; 
    } 

    return true; 
} 

这是从谷歌的地方,但很可惜,我一个顽皮的编码器,并没有把我的评论中的链接。对不起......

+0

你可以发布你的EncodeMetaInfo方法吗? – 2012-01-09 13:33:46

+0

@ThomasStock - 这是相当长的,但我发现我必须借用此代码的位置,即:http://www.eggheadcafe.com/community/sharepoint/69/10068722/coding-in-windows-service-to-上传的文档,在SharePoint的文档,library.aspx – Reddog 2012-01-10 19:26:17