Дополнение к ответу, который уже дал @AndreiU, и о том, как локально воспроизводить ошибки времени выполнения.
При развертывании в Azure, а не локально, я получил указанную ниже ошибку времени выполнения.
Не удалось загрузить файл или сборку System.Net.Http, Version = 4.2.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a или одну из их зависимостей. Система не может найти указанный файл. "," ExceptionType ":" System.IO.FileNotFoundException "," StackTrace ":" в Company.Project.Service.CompanyIntegrationApiService..ctor (Uri baseAddress) \ r \ n в Company.Project .BackOffice.Web.Controllers.OrderController..ctor () в C: \ projects \ company-project \ src \ Company.Project.BackOffice.Web \ Controllers \ Order \ OrderController.cs: строка 30 \ r \ n в lambda_method ( Закрытие) \ r \ n в System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (запрос HttpRequestMessage, HttpControllerDescriptor controllerDescriptor, тип controllerType) "}} Культура = нейтральный, PublicKeyToken = b03f5f7f11d50a3a 'или одна из его зависимостей. Система не может найти указанный файл. "," ExceptionType ":" System.IO.FileNotFoundException "," StackTrace ":" в Company.Project.Service.CompanyIntegrationApiService..ctor (Uri baseAddress) \ r \ n в Company.Project .BackOffice.Web.Controllers.OrderController..ctor () в C: \ projects \ company-project \ src \ Company.Project.BackOffice.Web \ Controllers \ Order \ OrderController.cs: строка 30 \ r \ n в lambda_method ( Закрытие) \ r \ n в System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (запрос HttpRequestMessage, HttpControllerDescriptor controllerDescriptor, тип controllerType) "}} Культура = нейтральный, PublicKeyToken = b03f5f7f11d50a3a 'или одна из его зависимостей. Система не может найти указанный файл. "," ExceptionType ":" System.IO.FileNotFoundException "," StackTrace ":" в Company.Project.Service.CompanyIntegrationApiService..ctor (Uri baseAddress) \ r \ n в Company.Project .BackOffice.Web.Controllers.OrderController..ctor () в C: \ projects \ company-project \ src \ Company.Project.BackOffice.Web \ Controllers \ Order \ OrderController.cs: строка 30 \ r \ n в lambda_method ( Закрытие) \ r \ n в System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (запрос HttpRequestMessage, HttpControllerDescriptor controllerDescriptor, тип controllerType) "}}
Когда я начал рассматривать сборки, я увидел, что мой веб-проект и проект службы ориентированы на разные версии для System.Net.Http .
Веб-проект:

Сервисный проект:

Легко подумать, что это вызвано несоответствием версий, но главное здесь - посмотреть на ошибку The system cannot find the file specified. .
Глядя на свойство path, мы видим, что веб-проект нацелен на сборку .Net Framework, а служба нацелена на сборку из Visual Studio 2017. Поскольку на сервере не установлена Visual Studio 2017, произойдет ошибка времени выполнения.
Веб-путь:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Net.Http.dll
Путь обслуживания:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Http.dll
Что - то же просто , как установка , Copy Localчтобы trueможно решить эту проблему, однако не во всех случаях.

Чтобы воспроизвести ошибку на вашем локальном компьютере, просто удалите необходимый System.Net.Http.dll из папки Visual Studio. Это даст вам ошибку времени выполнения и, возможно, некоторые ошибки сборки. После того, как они будут исправлены, все должно работать, по крайней мере, для меня.
Если вы установили System.Net.Httpчерез, NuGetпроверьте, какая сборка используется, посмотрев на .csprojверсию. System.Net.Http 4.3.4дает, например, следующую сборку:
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
Если вы используете сервер сборки, такой как Jenkins, TeamCity или AppVey, либо отсутствующая среда выполнения также .dllможет существовать там. В этом случае может не помочь использование NuGet-версии System.Net.Http или .dllлокальное удаление отсутствующих . Чтобы решить эту ошибку, посмотрите версию, которая не найдена, и конкретную PublicKeyToken. После этого создайте перенаправление привязки в любом Web.configили в App.configзависимости от вашего проекта. В моем случае я бы хотел использовать 4.0.0.0:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
Хорошая ветка Github об этой проблеме:
https://github.com/dotnet/corefx/issues/22781