WebAPI Put 返回 HTTPResponseMessage null

2023-12-31

我需要实现简单的编辑功能。我正在使用 webapi 服务来更新我的测试对象。 我从控制器发布请求中调用以下方法。

这是调用测试类中的方法的控制器,该方法又调用 put 服务

public ActionResult TestEdit(Test test)
{
  if (ModelState.IsValid)
  {
    // objTest is returned null
    HttpResponseMessage objtest = TestDatabaseService.TestEdit(test.testID, test);
  }
}

// Method which calls put service testDataService
public HttpResponseMessage TestEdit(int id, Test test)**
{
   string uri = baseUri + "Test/" + id;
   using (HttpClient httpClient = new HttpClient())
   {
      Task<HttpResponseMessage> response = httpClient.PutAsJsonAsync<Test>(uri, application);
            return response.Result;
   }
}

// The webapi service put method 
public HttpResponseMessage PutTest(int id, Test test)
{
  if (ModelState.IsValid && id == test).testID)
  {
    db.Entry(test)).State = EntityState.Modified;

    try
    {
      db.SaveChanges();
    }
    catch (DbUpdateConcurrencyException)
    {
      return Request.CreateResponse(HttpStatusCode.NotFound); 
    }

    // The status code is set to indicate the save is success
    return Request.CreateResponse(HttpStatusCode.OK); 
  }
  else
  {
    // If save failed
    return Request.CreateResponse(HttpStatusCode.BadRequest); 
  }
}

。 公共应用程序TestCreate(测试测试) { 字符串 uri = baseUri + "测试"; 使用 (HttpClient httpClient = new HttpClient()) { 任务响应 = httpClient.PostAsJsonAsync(uri, test); 返回 JsonConvert.DeserializeObjectAsync(response.Result.Content.ReadAsStringAsy‌​nc().Result).Result; } }


这没有任何意义:

JsonConvert.DeserializeObjectAsync<HttpResponseMessage>(response.Result.Content.ReadAsStringAsync().Result).Result

已经有回应了is an HttpResponseMessage:

Task<HttpResponseMessage> response

没有什么可以反序列化的。你所要做的就是await它得到它的结果。首先,制定你的方法async:

public async Task<HttpResponseMessage> TestEdit(int id, Test test)

然后在方法中等待结果:

return await httpClient.PutAsJsonAsync<Test>(uri, test);

这将有效地返回HttpResponseMessage目的。所以做这个async还有:

public async Task<ActionResult> TestEdit(Test test)

并等待您的其他方法:

HttpResponseMessage objtest = await TestDatabaseService.TestEdit(test.testID, test);

目前还不清楚为什么您需要在多个方法后面抽象它,但如果语义对您的需求有意义,那就没问题了。它不会立即受到伤害。

但基本上,您试图告诉 JSON 反序列化器对不是该对象的 JSON 表示形式的内容进行反序列化。所以结果将是null,因为反序列化会悄悄失败。但关键是您不需要在这里反序列化任何内容。PutAsJsonAsync<T>已经返回一个类型的对象HttpResponseMessage.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebAPI Put 返回 HTTPResponseMessage null 的相关文章

  • jQuery:“$(this).next().next()”有效,但“$(this).next('.div')”无效

    好吧 我正在尝试将这组信息单独隐藏 这有效 arrow click function this next next slideToggle img class arrow src https via placeholder com 40 h
  • jQuery Mobile 标题限制

    jQuery 移动标题有什么限制 有多少个字符 我们如何改变这个限制 使用 jQuery 移动 谢谢 您可以覆盖 ui title 类上的左右边距 为自己提供更多空间 但要小心 因为边距用于确保文本不会干扰标题中的任何左右按钮 ui hea
  • 在 Bootstrap 选择器上使用 jQuery 取消选择选项

    我对一些 UI 元素使用 Bootstrap SelectPicker 它允许用户选择多个选项并将其呈现在段落标签中的屏幕上 他们还应该能够删除选定的选项 这是我的代码 用于将选定的选项渲染到屏幕上 以便每个选项旁边都会显示一个 X 单击它
  • 为什么 ASP.Net MVC Range 属性采用类型?

    我只是想知道为什么范围验证属性可以采用类型和两个字符串作为参数 这是为了根据枚举或类似的东西验证字符串吗 另外 我想做的是找到一种简单的方法来验证必须出现在枚举中的 3 个字符的字符串 有什么建议吗 谢谢 亚历克斯 我确实发现你提到的 Ra
  • chrome中使用jquery的图像高度问题

    img height 回报0在 Chrome 中 但在 IE 和 Firefox 中返回实际高度 在 Chrome 中获取图像高度的实际方法是什么 正如 Josh 提到的 如果图像尚未完全加载 jQuery 将不知道尺寸是多少 尝试这样的操
  • jQuery、$(element).click 在 ie<9 上不起作用

    我有一个像这样的 jQuery 点击事件 document ready function id secteur activite click function console log ok 在 firefox 和 ie9 上 当我单击我的元
  • JS:event.touches 属性如何工作?

    我不明白如何使用 event touches 属性 例如 要获取 iPad iPhone 上的手指数量 您应该使用 event touches length 那么为什么这个示例代码不起作用呢 image bind touchstart fu
  • 如何更改 jquery ui 对话框按钮颜色?

    我需要通过添加另一个 css 的类来更改 jquery ui 对话框按钮颜色的颜色 ui dialog buttonpane find button addClass cancelButton 上面的代码行用于更改 css 类 但它对更改颜
  • 使用数组或列表在 JSP 中自动完成文本框

    我试图以不同的方式进行自动完成 但根本不起作用 从here https stackoverflow com questions 18612524 jquery autocomplete ui with servlet is not retu
  • 如何使用本地存储进行活动类?

    如何使用本地存储保存所选菜单项的 cookie Menu ul class nav nav pills li class active a href Customers a li li a href Statics a li li a hr
  • 循环引用和ScriptIgnore问题

    我有几个相互引用的 BusinessObject 类 我需要在 JsonResponse 中序列化一个类并将其返回到我的视图 我不断收到循环引用异常 但无法摆脱它 我已经放置了 ScriptIgnore 每个不是简单数据类型属性的属性上的装
  • 如何将 MVC 操作参数重新映射到另一个参数名称?

    我必须实现一个像这样调用的 MVC 操作 http address Controller MyAction resName name 它由第三方调用 并通过硬编码传递resName 所以天真的方法是采取这样的行动 ActionResult
  • Jquery - 如何替换div中的一个单词?

    我有一个从其他位置复制的 div 我需要更改其中的一个单词 这是 HTML div class dealer addy 8726 N Royal Ln br Irving TX 75063 br email protected cdn cg
  • Jquery 获取 .val

    我需要的是 this 值 this attr value 出现在 这个 中 activities btn id val this val 这是代码 thoughts list click function this attr id this
  • 如何使用jQuery加载跨域html

    我有 2 个不同的 java web 项目在 2 个不同的 tomcat 服务器上运行 假设 projA 和 projB 在这里 我尝试从 projA 加载 projB 中可用的 html 我只是使用 jQuery load 来实现这一点
  • JSON 解析错误 - JSON 中位置 1 处出现意外标记 o

    我需要获取一个 JSON 对象并记录标题控制台以实现自动完成功能 我的 json 的示例如下 title Example 1 url http www example1 com title Example 2 url http www ex
  • Backbone.View:delegateEvents 未将事件重新绑定到子视图

    我已将这个问题分解为尽可能小的示例 即 它只是为了演示问题 不一定代表现实世界的场景 假设我有一个父视图 此处为 MainView 其中包含一个子视图 此处为 SubView 如果在任何时候我需要重新渲染父视图 从而重新渲染子视图 我就会丢
  • CORS:为什么我的浏览器不发送 OPTIONS 预检请求?

    从我读到的内容来看CORS https en wikipedia org wiki Cross origin resource sharing 我理解它应该按如下方式工作 客户端的脚本尝试获取资源从服务器不同的起源 浏览器拦截这个请求并首先
  • Jquery 脉动改变颜色或图像

    我正在尝试使用 jquery 脉动代码让 div 改变颜色 但我希望它从红色变为黑色 但我听说要做到这一点 你必须下载某个插件 所以我希望它脉动为图片 到目前为止我有这两个代码 img src 36 gif alt width 105 he
  • 如何将 JSLint 用于依赖于 JQuery 的代码段?

    我对 Javascript 比较陌生 我想通过 JSLint 运行我周末玩的那段代码 这样它就可以指出我在哪里是个十足的白痴 不幸的是 我收到了大量关于缺少函数声明的错误 这些函数声明是 JQuery javascript 库及其各种插件的

随机推荐