私はASP.NET WebAPIコンポーネントを含むプロジェクトで作業しています。ソースエラーが私のGlobalConfiguration.Configure()
コールを指して間欠 "タイプを読み込めませんでした" System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter '"エラー
Could not load type 'System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter' from assembly 'System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
:
が断続的に、私は次のエラーを取得する私のレジスタで
Line 35: {
Line 36: AreaRegistration.RegisterAllAreas();
Line 37: GlobalConfiguration.Configure(WebApiConfig.Register); //<-- error here
Line 38: FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
Line 39: RouteConfig.RegisterRoutes(RouteTable.Routes);
、私はデフォルトでJSONを返すために、次のことをやっています:
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes
.FirstOrDefault(t => t.MediaType == "application/xml");
if (appXmlType != null)
{
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
(eソースを使用していますが、デフォルトでJSONを返す方法としてこのサイトのどこかに見つかっています。)
私は今後もデフォルトのコンテンツタイプとしてJSONを引き続き返したいと思います。
このプロジェクトには、WebAPIサイトにヒットした2つのWebAPI以外のWebサイト(MVC5)が含まれています。ここで
は興味深いことだ:
- アプリケーションがデプロイされている場合、このはが
- (アズールに)発生しません。これは、唯一の通常時折
- を起こる、私は中MVC5サイトのいずれかを実行しますデバッガとこの問題を参照してください
- 私は上記の後にWebAPIサイトに直接移動すると、私は上記のようにエラーで "死の黄色い画面"を得るでしょう
- 時には、でもコールドリブート後に、このエラーが表示されません、他の回は、それは私が現在、問題を回避するために何
を以下となります。
- 私はWebAPIのサイトを実行している場合エラーが存在する場合、デバッガは、それが
- (上記あたり)デバッガで実行した後に自分自身を固定します、私は、デバッガでMVC5サイトを再起動することができますし、問題がジャスト
繰り返す離れ、THIを行きますs は実行されません。アプリケーションがAzureにデプロイされている場合、が実行されます。
私はこのプロジェクトに取り組んでいる複数の開発者を抱えており、私たちはすべて同じ段階でエラーに遭遇します。
私は、次のNugetパッケージ参照しています:
- Microsoft.AspNet.WebApi(バージョン5.2.3)
- Microsoft.AspNet.WebApi.Client(バージョン5.2.3)
- マイクロソフトを。 AspNet.WebApi.Core(バージョン5.2。3)
- Microsoft.AspNet.WebApi.Owin(バージョン5.2.2)
- Microsoft.AspNet.WebApi.WebHost(バージョン5.2.3)
私は*.csproj
ファイルの中身を見てみると、私が持っています以下を参照する:
<Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
<Private>True</Private>
</Reference>
私は、ウェブサイトのbin
フォルダをチェックしました、そしてその中にすべてのアセンブリは、(System.Net.Http.Formattingを含む上記項目ごとのように正しいバージョンを持っています。 dll)。
http://localhost/site1
http://localhost/site2
:
http://localhost/api
はまた、デバッグおよび開発中に、3つのウェブサイトのそれぞれは、(外部リソースの制約がこれを行うために私たちを強制する)Local IIS
下で実行されているので、私は持っている、ということに注意してください
このエラーを取得するには、デバッグセッションに入るために面倒になってきています、デバッガを停止し、デバッガの下でAPIサイトを起動して、最初からやり直していました。
ここで何が起こっているのか他にどこにトラッキングするのかわかりません。何か案は?
アップデート - 2016年7月26日
それでもこの出来事を持っています。質問を投稿してから、独自のアプリケーションプールで実行するようにWebAPIを更新しましたが、それは違いをもたらさなかったようです。
'System.Net.Http.Formatting'リファレンスの' 'Copy to local''をtrueに設定しようとしてください –
コメントをお寄せいただきありがとうございます - ' 'ローカルにコピーする' 'が' '真っ先に' 'に設定されました - 違いはないようです。 –
おそらくあなたの 'bin'フォルダ(デプロイ時)に' System.Net.Http.Formatting.dll'というファイルが1つあります。これを削除するとランタイム 'System.Net.Http.Formatting.dll'が使用されます。 – josejuan