SharePoint服务器上的WebRequest到PUT文件返回(405)方法不允许

时间:2010-10-15 15:59:33

标签: c# .net sharepoint

我有一个托管一些文件的sharepoint服务器。

我有一些.Net代码创建一个WebRequest来获取一些文件。这是正常的。

当我尝试使用类似的代码将PUT文件放在同一位置时,我得到了一个:

System.Net.WebException: The remote server returned an error: (405) Method Not Allowed on my request.GetResponse();

我没有得到任何InnerExceptions。

这是我的代码:

        var requestPath = Path.Combine(serverBasePath, library.GetLibraryPath(), Path.GetFileName(filePath));

        var request = WebRequest.Create(requestPath);
        request.Credentials = CredentialCache.DefaultNetworkCredentials;
        request.Method = "PUT";
        var buffer = new byte[1024];

        using (var requestStream = request.GetRequestStream())
        using (var fileStream = new FileStream(filePath, FileMode.Open))
            for (int i = fileStream.Read(buffer, 0, buffer.Length); i > 0; i = fileStream.Read(buffer, 0, buffer.Length))
                requestStream.Write(buffer, 0, i);


        using (request.GetResponse()) { }

        return requestPath;

使用相同的代码(用GET替换PUT并将文件路径更改为现有文件)可以正常工作。

通过Sharepoint Web界面,我可以上传新文件。我还尝试更改参数中的授权,以便对此目录中的所有Authentified Users进行完全控制。

1 个答案:

答案 0 :(得分:2)

当我收到HTTP错误时,我通常会使用Fiddler,但这是暂时的。

我找到了关于405错误的博客,似乎有一个动词不匹配:

http://sharepointinterface.com/2009/12/28/sharepoint-webdav-and-a-case-of-the-405-status-codes/

您是否可以将动词PUT添加到网站上,如果这样做当然是明智之举?