【问题标题】:WebRequest to PUT file on SharePoint server returns (405) Method Not AllowedWebRequest 到 SharePoint 服务器上的 PUT 文件返回 (405) 方法不允许
【发布时间】:2010-10-15 15:59:33
【问题描述】:

我有一个托管一些文件的共享点服务器。

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

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

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;

使用相同的代码(将 PUT 替换为 GET 并将文件路径更改为现有文件)有效。

通过 Sharepoint Web 界面,我可以上传新文件。我还尝试更改参数中的授权,以将所有经过身份验证的用户的完全控制放在此目录上。

【问题讨论】:

    标签: c# .net sharepoint


    【解决方案1】:

    当我遇到 HTTP 错误时,我通常使用 Fiddler,但这是一个问题。

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

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

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

    【讨论】:

    • 我阅读了您发布的博客并尝试了作者的解决方案,即禁用 WebDAV 发布并且它起作用了。
    • 我是引用的博文的作者;很高兴听到它对你有用。值得一提的一点是:该修复程序似乎相当特定于在 IIS7.x 下运行的 SharePoint 2007。我没有对 SharePoint 2010 进行广泛的测试,但初步测试表明不存在相同的问题。仅供参考/单挑。
    • 这导致我们在 Sharepoint365 网站上出现问题,想知道您是否对将 PUT 动词添加到 sharepoint 的在线版本有任何建议?
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 2021-08-07
    • 2012-04-21
    相关资源
    最近更新 更多