C# Geoserver返回405:不允许使用方法

C# Geoserver返回405:不允许使用方法,c#,rest,geoserver,qgis,C#,Rest,Geoserver,Qgis,我正在尝试在C#中创建Geoserver REST客户端。示例代码如下: private static string GEOSERVER_HOST = "http://10.0.0.248:8080/geoserver/rest/"; private static string GEOSERVER_USER = "admin"; private static string GEOSERVER_PASSWD = "geoserver"; public WebResponse PerformReq

我正在尝试在C#中创建Geoserver REST客户端。示例代码如下:

private static string GEOSERVER_HOST = "http://10.0.0.248:8080/geoserver/rest/";
private static string GEOSERVER_USER = "admin";
private static string GEOSERVER_PASSWD = "geoserver";

public WebResponse PerformRequest(string endPoint, string requestBody, string method = "PUT")
{
    string gUrl = GEOSERVER_HOST + endPoint;
    WebRequest request = WebRequest.Create(gUrl);

    request.ContentType = "text/xml";
    request.Method = method;
    request.Credentials = new NetworkCredential(GEOSERVER_USER, GEOSERVER_PASSWD);

    if (method != "GET")
    {
        byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(requestBody);
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(buffer, 0, buffer.Length);
        requestStream.Close();
    }
    WebResponse response = request.GetResponse();

    return response;
}

public bool AddNewWorkspace(string workspaceName)
{
    try
    {
        PerformRequest("workspaces", "<workspace><name>"+ workspaceName+"</name></workspace>");
        return true;
    }
    catch (Exception ex)
    {
        return false;
    }
}
private静态字符串GEOSERVER\u HOST=”http://10.0.0.248:8080/geoserver/rest/";
专用静态字符串GEOSERVER_USER=“admin”;
专用静态字符串GEOSERVER_PASSWD=“GEOSERVER”;
公共WebResponse PerformRequest(字符串端点、字符串请求体、字符串方法=“PUT”)
{
字符串gUrl=GEOSERVER_HOST+endPoint;
WebRequest=WebRequest.Create(gUrl);
request.ContentType=“text/xml”;
request.Method=Method;
request.Credentials=newnetworkcredential(GEOSERVER\u USER,GEOSERVER\u PASSWD);
如果(方法!=“获取”)
{
byte[]buffer=Encoding.GetEncoding(“UTF-8”).GetBytes(请求体);
Stream requestStream=request.GetRequestStream();
Write(buffer,0,buffer.Length);
requestStream.Close();
}
WebResponse=request.GetResponse();
返回响应;
}
public bool AddNewWorkspace(字符串workspaceName)
{
尝试
{
PerformRequest(“工作空间”,“工作空间名称+”);
返回true;
}
捕获(例外情况除外)
{
返回false;
}
}
执行request.GetResponse()时,返回异常“405:不允许使用方法”

我正在使用一个相当新的Geoserver(我相信它是2.8.something)。选择默认安装选项。REST功能已打开(我可以使用浏览器浏览/REST/“目录”)

Geoserver正在32位Windows 8计算机上运行。并且Geoserver已启动

我还可以毫无问题地执行GET请求,因此身份验证似乎可以正常工作


任何帮助都将不胜感激。

HTTP/1.1 405不允许的方法
通常指请求方法/动词

您的参数
方法
的默认值为
“PUT”
,在调用
PerformRequest
时,您不会覆盖该值


似乎
/geoserver/rest/workspace
不支持
PUT
操作。

HTTP/1.1405不允许的方法
通常指请求方法/动词

您的参数
方法
的默认值为
“PUT”
,在调用
PerformRequest
时,您不会覆盖该值


似乎
/geoserver/rest/workspaces
不支持
PUT
操作。

您确定
/geoserver/rest/workspaces
支持
PUT
操作吗?我们现在是朋友了。更改为POST-worked。我使用示例代码上载了一个使用PUT的形状文件。将您的注释作为一部分您确定
/geoserver/rest/workspaces
支持
放置操作吗?我们现在是朋友。更改为POST worked。我正在使用示例代码上载一个使用放置的形状文件。将您的注释作为答案的一部分,我将接受。谢谢。既然您上载了文件,我假设th PUT,你也会用PUT创建工作区。我错了。谢谢。我假设既然你用PUT上传文件,你也会用PUT创建工作区。我错了。