【问题标题】:C# How to solve Web Client Upload file "The remote server returned an error: (405) Method Not Allowed."?C#如何解决Web客户端上传文件“远程服务器返回错误:(405)方法不允许。”?
【发布时间】:2011-10-24 20:51:15
【问题描述】:

您好,我想将本地的 html 文件上传到服务器中的远程文件夹,该文件夹包含带有地理服务器元素的数据目录,这是我的代码:

public void CopyWS(string SourcePath, string DestinationPath)
    {
        try
        {

            string SourcePath = Path.GetFullPath("Result.html");
            string DestinationPath = @"http://xx.xx.xxx.:8080/geoserver/rest/workspaces/";               
            string authInfo = "admin:geoserver";
            WebClient client = new WebClient();
            client.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo));

          client.UploadFile(DestinationPath, "PUT", SourcePath); 
}

        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }

我收到以下错误“不允许使用错误 405 方法”。我正在尝试使用不同的方法,例如 post 而不是 put,但我遇到了同样的错误。

编辑:有人认为这可能是一个安全问题吗?使用 UploadData 我遇到了同样的错误

编辑:经过很长时间使用不同的方法(UploadDatat ie)进行测试后,我总是遇到同样的错误。我一直在搜索和阅读,但真的什么都做不了有用。

编辑:有什么想法吗?

提前致谢

【问题讨论】:

  • DestinationPath的内容是什么样的?
  • 基本上 Method Not Allowed 表示未配置 PUT 动词

标签: c# c#-4.0 file-upload upload geoserver


【解决方案1】:

PUT 未配置...通常PUT(但并非总是)意味着服务器理解WebDAV...HTTP 上传通常通过POST...完成

另一种可能性是某些代理阻止PUT

编辑 - 根据评论:

POST 请求需要构建不同的方式,并且取决于服务器对它们的期望...对于一些示例代码,请参阅Upload files with HTTPWebrequest (multipart/form-data)

【讨论】:

  • 感谢您的回复 Yahia 但使用 POST 我收到错误 400 错误请求
  • 在您的示例中,他们使用 HTTPWebrequest 是不可能与 WebClient 一起使用的?
  • 您可以尝试client.UploadFile(DestinationPath, SourcePath);,但在我的编辑中,服务器可能希望POST 中有一些特定的东西,然后您最好使用HTTPWebRequest...
  • 谢谢,我正在完成关于 Web 客户端的测试,我将从 HTTPWebrequest 开始,我认为使用 WebClient 是可能的,但现在我不确定
猜你喜欢
  • 1970-01-01
  • 2012-04-27
  • 2014-11-27
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
相关资源
最近更新 更多