.NET web api HttpPatch返回403禁止

时间:2014-10-16 17:28:30

标签: asp.net-web-api http-status-code-403 http-patch

我有一个简单的资源,提供翻译列表。 get end point采用语言并返回翻译词典。任何更新都只在一个翻译上进行,所以我认为这样做可以作为补丁。

在我的api控制器中,我可以正常工作,但是我对补丁终点的任何调用都给了我一个403禁止的错误,我不明白为什么。

 [HttpGet]
    // GET api/<controller>
    public Dictionary<string,string> Get(String id)
    {
        return TranslationSvc.GetTranslatedStrings(id);
    }



    [HttpPatch]
    public TranslationEntry Patch(TranslationEntry data)
    {//403 prevents this end point from ever executing
        if (TranslationSvc.UpdateTranslation(data.Lang, "", data.Translation.Key, data.Translation.Value))
        {
            return data;
        }
        else
        {
            //return a 500 error;
            throw new HttpResponseException(HttpStatusCode.InternalServerError);
        }
    }

    [HttpPut]
    public TranslationEntry Put(TranslationEntry data)
    {//works, but technically a put should be the full resource which is the full collection
        if (TranslationSvc.UpdateTranslation(data.Lang, "", data.Translation.Key, data.Translation.Value))
        {
            return data;
        }
        else
        {
            //return a 500 error;
            throw new HttpResponseException(HttpStatusCode.InternalServerError);
        }
    }

1 个答案:

答案 0 :(得分:0)

我发现了问题。我忘记了我正在运行一个模拟我们单点登录行为的本地代理。该本地代理配置为拒绝GET和基本上发布操作。抱歉虚警问题:)