2012-03-20 26 views
2

私はAsp.NET WebAPIモジュールを使用しようとしていますが、私は奇妙なエラーが発生します。私はこの簡単なプログラムを実行しようとすると :ASP.NET WebApi - HttpClient - メソッドが見つかりません

class Program 
{ 
    static void Main(string[] args) 
    { 
     System.Net.Http.HttpClient client = new HttpClient(); 
     string data = client.GetStringAsync("http://www.kralizek.se/").Result; 

     Console.WriteLine(data); 

     Console.ReadLine(); 
    } 
} 

を、私はこのエラーを持っています。

System.MissingMethodException was unhandled 
    Message=Method not found: 'System.Threading.Tasks.Task`1<System.String> System.Net.Http.HttpClient.GetStringAsync(System.String)'. 
    Source=Connector.App 
    StackTrace: 
     at ConnectorApp.Program.Main(String[] args) 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 

エラーはVisual StudioとLinqPadで発生しますが、私の同僚には発生しません。

.NET 4.5デベロッパープレビューと何らかの矛盾があると思っていたので、アンインストールしましたが、何のメリットもありません。

おかげ

+0

あなたは.net 4.5を参照していますか? –

+0

いいえ私はそうではありません。私の同僚のワークステーションで同じbinフォルダーが "そのまま"実行されます – Kralizek

答えて

2

ASP.NETのWeb APIのベータ版は、明示的に、.NET Frameworkの4.5開発者プレビューと互換性がありません。 http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253802を参照してください。

両方をアンインストールし、両方を削除してからWeb APIを再インストールすることをお勧めします。私は.NETのアンインストールを考えていません。 Web APIをインストールした後にそのトリックが行われます。

+0

これは部分的に正しいです: 私はVisual Studio 11 DPと.NET 4.5をアンインストールしました。その後私はVS2010を修復し、すべてが機能していました。 ありがとう – Kralizek

0

VS2012をインストールした後、pre-RTM WebAPIを使用することは可能です。あなたのアプリ/ web.configファイルに以下を追加します

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/> 
      <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
      <bindingRedirect oldVersion="1.0.0.0 - 2.0.0.0" newVersion="2.0.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

問題は、新しいバージョンがGACにあり、アッシーの発見を好むのでSystem.Net.HttpのRTM版がプリRTM版を上書きしていることです新しいバージョン。たとえあなたが明白なファイル参照古いバージョン(grrr)。

NewtonSoftエントリは

はとにかく、これが私たちのために働いている...厳密には必要ではありません。

関連する問題