0

我有一个提供翻译列表的简单资源。get 端点接受一种语言并返回一个翻译字典。任何更新都将只针对一个翻译,所以我认为将其作为补丁进行是合适的。

在我的 api 控制器中,我可以很好地进行 put 工作,但是我对补丁端点所做的任何调用都会给我一个 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);
        }
    }
4

1 回答 1

0

我发现了问题。我忘记了我正在针对模拟我们单点登录行为的本地代理运行。该本地代理被配置为基本上拒绝除了 GET 和发布操作之外的任何内容。抱歉误报问题:)

于 2014-10-16T19:03:25.703 回答