2013-11-26 54 views
5

私はhttp://www.asp.net/web-api/overview/security/working-with-ssl-in-web-apiを読み、そのページからコードを使用してみました:私は、私はエラーを取得しないビルドするHttpResponseMessageのWeb APIで動作していない(.NET 4.5)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web; 
using System.Web.Http; 
using System.Web.Http.Filters; 
using System.Web.Http.Controllers; 

public class RequireHttpsAttribute : AuthorizationFilterAttribute 
{ 
    public override void OnAuthorization(HttpActionContext actionContext) 
    { 
     if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps) 
     { 
      actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden) 
      { 
       ReasonPhrase = "HTTPS Required" 
      }; 
     } 
     else 
     { 
      base.OnAuthorization(actionContext); 
     } 
    } 
} 

を、しかし、実行時には、このエラーを与えます:

CS0012: The type 'System.Net.Http.HttpRequestMessage' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

私のプロジェクトの参照フォルダにSystem.Net.Httpへの参照があります。私がそのプロパティを見ると、バージョン4.0.0.0とランタイムバージョン4.0.30319があります。私のプロジェクトプロパティは、ターゲットフレームワークは.NET 4.5であると言います。

VS2013 ExpressのMy IntelliSenseは、HttpResponseMessageまたはHttpRequestMessageと何も関係がありません。

私は参照を削除して再追加しようとしましたが、役に立たなくなりました。

ご協力いただければ幸いです。

答えて

8

あなたのweb.configファイルに追加してみてください:

<configuration> 
    <system.web> 
     <compilation> 
      <assemblies> 
       <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      </assemblies> 
      </compilation> 
    </system.web> 
</configuration> 
+1

'system.web'と' assemblies'の間の 'compilation'要素を忘れないでください。 –

0

てみ加えるアセンブリは、configファイル

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime 
4

まあで結合、私は遅れてますが、念の誰かに他のこのような問題に直面したことがあります。

<compilation debug="true" targetFramework="4.5"/> 

そして、そのようなことはない自己終了タグ行います:

<compilation debug="true" targetFramework="4.5"> 
</compilation> 

次に、アセンブリ情報あなたと内側のアセンブリにタグを追加

まず第一に、あなたは文字列を検索する必要がありますこれは次のようになります。

<compilation debug="true" targetFramework="4.5"> 
     <assemblies> 
     <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
     </assemblies> 
</compilation> 

ソリューションを再構築してください。 this linkを見てください。

+0

これは私のためのトリックでした。それは問題なくコンパイルされましたが、intelliSenseはVisual Studioを再起動するまで、剃刀ビューエンジンでエラーとして表示しました。 –

関連する問題