簡體   English   中英

Method.Put上的RestSharp奇怪的錯誤

[英]RestSharp weird error on Method.Put

我正在嘗試使用RestSharp更新資源。 該API運作良好,因為是在其他應用程序中使用的,因此可以排除某些路由問題,或者排除我這方面的問題而不是API問題。

無論如何。 我當前的情況是我想更新位於host/api/resource/id的特定資源

這是我當前在DataProvider層中的代碼

public override bool Update(string resource, Dictionary<string, object> properties)
{
    this.request = new RestRequest(resource + "/{id}", Method.PUT);

    for (int i = 0; i < properties.Count; ++i)
    {
        KeyValuePair<string, object> kvp = properties.ElementAt(i);
        if (kvp.Key != "id")
            this.request.AddParameter(kvp.Key, kvp.Value, ParameterType.GetOrPost);
        else
            this.request.AddParameter(kvp.Key, kvp.Value, ParameterType.UrlSegment);
    }

    var response = this.CallApi();
    // ... other stuff
}

這段代碼只是根據方法從外部接收到的字典創建請求和正確的參數,然后調用CallApi()方法

private IRestResponse CallApi()
{
    var client = new RestClient(BaseUrl);
    var response = client.Execute(this.request);

    if(response.ErrorException != null)
    {
        // Response has some error!
        // ... other stuff
    }

    if(response.StatusCode != System.Net.HttpStatusCode.OK)
    {
        // Response received something different from HTTP status code OK
        // ... other stuff
    }

    return response;
}

CallApi非常適合其他所有調用,例如GET,POST,DELETE甚至PATCH,但是當我嘗試將其與Update結合使用,從而使用PUT時,從client.Execute(this.request)接收到的響應是405 Method Not Allowed。

經過一點調試后,我發現ResponseUri只有一個ResponseUri字符串,其中包含host字符串而不是host/api/resource/id這似乎是由

this.request = new RestRequest(resource + "/{id}", Method.PUT);

實際上,如果我刪除/{id}部分,RequestUri具有正確的host/api/resource ,當然沒有id,反正這是錯誤的,因為我需要id:-/

有人知道為什么會這樣嗎?

問題出在新實例上的反斜杠上。 只需從/{id}刪除反斜杠就可以了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM