Azure函数:HttpRequestMessage不包含“ CreateResponse”的定义

时间:2019-01-26 09:22:42

标签: c# azure azure-functions

我构建了一个由Http请求触发的c#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'

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

您知道如何解决此问题吗?

谢谢

1 个答案:

答案 0 :(得分:2)

解决方案:

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

说明:

HttpRequestMessage位于程序集System.Net.Http.dll中。我发现函数主机引用了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)安装的引用,否则我们会收到错误消息。