.NET Standard 2.0 依存関係を追加した後、System.Net.Http.Formatting.MediaTypeFormatter.get_SupportedMediaTypes() メソッドが見つかりません 質問する

.NET Standard 2.0 依存関係を追加した後、System.Net.Http.Formatting.MediaTypeFormatter.get_SupportedMediaTypes() メソッドが見つかりません 質問する

共通のユーティリティ メソッドを共有するために内部で使用する小さな NuGet パッケージを参照する .NET Framework 4.6.1 WebApi プロジェクトがあります。

私たちは、いくつかのものを .NET Core に移行したいので、ユーティリティ パッケージを .NET Standard 2.0 をターゲットにするように変更しました。これは、新しい .NET Standard 2.0 プロジェクトを作成し、ソース ファイルをコピーするだけで実行できました。

ユーティリティ パッケージ csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  </PropertyGroup>

</Project>

WebApi プロジェクトでパッケージを更新した後、起動時に次の例外が発生します。

[MissingMethodException: Method not found: 'System.Collections.ObjectModel.Collection`1<System.Net.Http.Headers.MediaTypeHeaderValue> System.Net.Http.Formatting.MediaTypeFormatter.get_SupportedMediaTypes()'.]
   MyWebApiProject.Application.InitializeHttpConfiguration(HttpConfiguration config) in C:\MyWebApiProject\Global.asax.cs:44
   System.Web.Http.GlobalConfiguration.Configure(Action`1 configurationCallback) +34
   MyWebApiProject.Application.OnApplicationStarted() in C:\MyWebApiProject\Global.asax.cs:62
   Ninject.Web.Common.NinjectHttpApplication.Application_Start() +183

[HttpException (0x80004005): Method not found: 'System.Collections.ObjectModel.Collection`1<System.Net.Http.Headers.MediaTypeHeaderValue> System.Net.Http.Formatting.MediaTypeFormatter.get_SupportedMediaTypes()'.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +10104513
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +173
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): Method not found: 'System.Collections.ObjectModel.Collection`1<System.Net.Http.Headers.MediaTypeHeaderValue> System.Net.Http.Formatting.MediaTypeFormatter.get_SupportedMediaTypes()'.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +10085804
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

変更されるのは、packages.config と csproj のバージョン番号のみです。

何か案は?

ありがとう!

ベストアンサー1

結局、System.Net.Http へのバインディング リダイレクトだけが必要であることが判明しました。

<dependentAssembly>
  <assemblyIdentity name="System.Net.Http" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0"/>
</dependentAssembly>

おすすめ記事