2016-01-25 9 views
10

私は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
  • はまた、デバッグおよび開発中に、3つのウェブサイトのそれぞれは、(外部リソースの制約がこれを行うために私たちを強制する)Local IIS下で実行されているので、私は持っている、ということに注意してください

  • http://localhost/api

このエラーを取得するには、デバッグセッションに入るために面倒になってきています、デバッガを停止し、デバッガの下でAPIサイトを起動して、最初からやり直していました。

ここで何が起こっているのか他にどこにトラッキングするのかわかりません。何か案は?

アップデート - 2016年7月26日

それでもこの出来事を持っています。質問を投稿してから、独自のアプリケーションプールで実行するようにWebAPIを更新しましたが、それは違いをもたらさなかったようです。

+0

'System.Net.Http.Formatting'リファレンスの' 'Copy to local''をtrueに設定しようとしてください –

+0

コメントをお寄せいただきありがとうございます - ' 'ローカルにコピーする' 'が' '真っ先に' 'に設定されました - 違いはないようです。 –

+0

おそらくあなたの 'bin'フォルダ(デプロイ時)に' System.Net.Http.Formatting.dll'というファイルが1つあります。これを削除するとランタイム 'System.Net.Http.Formatting.dll'が使用されます。 – josejuan

答えて

2

アンインストールされたWeb API 2 NuGetパッケージ インストールされたWeb API 2 NuGetパッケージ。

+0

私はこれを行って、私が見つけたものを見ます。私は最近、この問題に取り組む新鮮なレポを最近クローン化した新しい開発者としてこれを修正することはできないだろう。 –

1

私はあなたが間違っていると思います。このようなあなたのデフォルトのメディアフォーマッタとしてJSONを設定してみてください:

// first clear all formatters 
config.Formatters.Clear(); 
// Since JSON is the first added, 
// it will be the "default" if no Accept header present 
config.Formatters.Add(new JsonMediaTypeFormatter()); 
// You can choose not to add these back if you never want to use them, 
// up to you.  
config.Formatters.Add(new XmlMediaTypeFormatter()); 
config.Formatters.Add(new FormUrlEncodedMediaTypeFormatter()); 
+0

私はこの変更を行っているが、結果には何の違いも生じていない。 –

-1

あなたが紛争について語っ警告のためのルックスを作成するとき。警告をダブルクリックすると、web.configのセクションに互換性のあるバージョンが挿入されます。これは明らかに手動でも行うことができます。

0

私はおそらく私のグローバルアセンブリキャッシュ(GAC)にSystem.Net.Http.Formattingの誤ったバージョンだったものを追加し、私のWebサービスで

Could not load type 
'System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter' from assembly 
'System.Net.Http.Formatting 

エラーを取得し始めていました。このSystem.Net.Http.FormattingをGACから削除した後、私のWebサービスが再び動作するようになりました。

関連する問題