我有一个简单的资源,提供翻译列表。 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);
}
}
答案 0 :(得分:0)
我发现了问题。我忘记了我正在运行一个模拟我们单点登录行为的本地代理。该本地代理配置为拒绝GET和基本上发布操作。抱歉虚警问题:)