使用HTTP 405通过代理上传到SharePoint失败

hy1*_*y13 5 .net c# sharepoint proxy webdav

我正在尝试使用WebClient和independentntsoft 的WebDav .NET库将文件上传到SharePoint库.首先我遇到的问题是Upload-method返回了HTTP 403的异常.我意识到我必须通过代理.现在它返回HTTP 405.我也使用了ClientOM,但是无法在那里配置代理设置,所以我仍然在那里获得HTTP 403.

我用于WebClient和WebDav .NET的代码如下:

Web客户端:

webClient.UseDefaultCredentials = true;
string[] bypassList = { "localhost" };
webClient.Proxy = new WebProxy("proxy", true, bypassList, new NetworkCredential("user", "password"));
try
{
    byte[] response = webClient.UploadFile("http://sharepoint/testBlankSite/testLibrary/TestUpload.txt", "PUT", @"...\Desktop\TestUpload.txt");
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}
Run Code Online (Sandbox Code Playgroud)

WebDav .NET

NetworkCredential credential = new NetworkCredential("user", "password");
string[] bypassList = { "localhost" };
WebProxy proxy = new WebProxy("proxy", true, bypassList, new NetworkCredential("user", "password"));
WebdavSession session = new WebdavSession(credential, proxy);

Resource resource = new Resource(session);
try
{
    resource.Upload("http://sharepoint/testBlankSite/testLibrary/TestUpload.txt", @"...\Desktop\TestUpload.txt");
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这不起作用,我怎么能解决这个问题?

小智 1

这是 SharePoint 中非常常见的问题。查看这些链接:

SharePoint、WebDAV 和 405 状态代码案例

SharePoint 2013 - 禁用 SharePoint 上的 WebDAV 使用

正如 @GavinB 和 @Jeremy 提到的,替代方案是客户端对象模型,即Microsoft.SharePoint.Client。这个库只是一个包装器,它执行的 HTTP 请求与您正在尝试的请求类似。