Функции Azure: HttpRequestMessage не содержит определения для «CreateResponse» - PullRequest
0 голосов
/ 26 января 2019

Я создал приложение функций ac # Azure, запускаемое Http-запросом.Целью этого приложения является использование цифрового близнеца для изменения желаемого состояния моего устройства.Для этого я импортировал следующие зависимости (в файле 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 голосов
/ 26 января 2019

Решение:

Перейдите в kudu (https://<functionapp>.scm.azurewebsites.net/DebugConsole) и перейдите к D:\home\data\Functions\packages\nuget, удалите пакет system.net.http и перезапустите приложение функции.

Объяснение:

HttpRequestMessage находится в сборке System.Net.Http.dll.Я обнаружил, что узел Function ссылается на сборку из GAC (Global Assembly Cache).В 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 внутри), иначе мы получим ошибку.

...