首页 > 解决方案 > Azure Functions:HttpRequestMessage 不包含“CreateResponse”的定义

问题描述

我构建了由 Http 请求触发的 ac# Azure 函数应用程序。这个应用程序的目的是使用数字孪生来改变我的设备所需的状态。为此,我导入了以下依赖项(在 project.son 文件中):

  "Microsoft.Azure.Devices": "1.17.2",
  "Microsoft.Azure.Devices.Client": "1.19.0",
  "Microsoft.Azure.Devices.Shared": "1.15.2",
  "Newtonsoft.Json": "12.0.1"

这是我的错误,当我想返回一个 HttpResponseMessage

req.CreateResponse<string>(HttpStatusCode.BadRequest, "Please pass a status on the query string or in the request body");

我收到以下错误:

[run.csx] 'HttpRequestMessage' does not contain a definition for 'CreateResponse' and the best extension method overload 'HttpRequestMessageExtensions.CreateResponse<string>(HttpRequestMessage, HttpStatusCode, string)' requires a receiver of type 'HttpRequestMessage'

我怀疑依赖项会导致此错误,但我在互联网上没有找到任何解决方案。

你知道如何解决这个问题吗?

谢谢

标签: c#azureazure-functions

解决方案


解决方案:

转到 kudu( https://<functionapp>.scm.azurewebsites.net/DebugConsole) 并导航到D:\home\data\Functions\packages\nuget,删除system.net.http包然后重新启动函数应用程序。

解释:

HttpRequestMessage位于组装System.Net.Http.dll。我发现 Function host 引用了 GAC(全局程序集缓存)中的程序集。在 Azure 上,文件路径是D:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Net.Http\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Net.Http.dll. 引用不能重定向到我们使用 nuget 安装的那个(您安装的包在System.Net.Http.dll内部引用),否则我们会出错。


推荐阅读