更新:我下载了 Ramone 项目,将其添加到我的项目中,然后使用调试器再次运行该应用程序。错误如下所示:
公共 MediaTypeWriterRegistration GetWriter(Type t, MediaType mediaType) { ...
CodecEntry entry = SelectWriters(t, mediaType).FirstOrDefault(); => 这一行抛出错误
... } CodecManager.cs 中发生错误。我试图弄清楚为什么它不能识别 json-patch 媒体类型。可能是因为作者没有正确注册吗?我正在调查它。如果您发现问题,请告诉我。由于您是该库的作者,因此您更容易找出问题所在。我将不得不通过所有的代码文件和方法来找到问题。谢谢!
我很高兴知道 Ramone 库支持 json-patch 操作,但是当我尝试它时,出现以下错误:
415-不支持的媒体类型
这与我使用 RestSharp 时遇到的错误相同。我想可能是 RestSharp 不支持 json-patch 和错误,所以我决定尝试 Ramone lib,但我仍然得到同样的错误。Endpoint 没有问题,因为当我使用 Postman 尝试相同的命令时,它可以工作,但是当我在 C# 中以编程方式尝试它时,它会引发不受支持的媒体类型错误。这是我的代码:
var authenticator = new TokenProvider("gfdsfdsfdsafdsafsadfsdrj5o97jgvegh", "sadfdsafdsafdsfgfdhgfhehrerhgJ");
JsonPatchDocument patch = new JsonPatchDocument<MetaData>();
patch.Add("/Resident2", "Boyle");
//patch.Replace("/Resident", "Boyle");
RSession = RamoneConfiguration.NewSession(new Uri("https://api.box.com"));
RSession.DefaultRequestMediaType = MediaType.ApplicationJson;
RSession.DefaultResponseMediaType = MediaType.ApplicationJson;
Ramone.Request ramonerequest = RSession.Bind("/2.0/files/323433290812/metadata");
ramonerequest.Header("Authorization", "Bearer " + authenticator.GetAccessToken(code).AccessToken);
//var ramoneresponse = ramonerequest.Patch(patch); //results in error: 405 - Method Not Allowed
var ramoneresponse = ramonerequest.Put(patch); //results in error: 415 - Unsupported Media Type
var responsebody = ramoneresponse.Body
端点信息可在此处获得:http: //developers.box.com/metadata-api
我在以下文章中使用了 json-patch 部分作为参考:
http://elfisk.dk/Ramone/Documentation/Ramone.pdf
顺便说一句,我尝试了 Patch() 方法(如上面的参考文章所示),但导致“方法不允许”,所以我使用了 Put() 方法,该方法似乎有效,但由于 json-patch 操作而出错。
任何解决此问题的帮助、指导和提示将不胜感激。提前非常感谢。
-假