2013-11-26 14 views
5

मैं http://www.asp.net/web-api/overview/security/working-with-ssl-in-web-api पढ़ सकते हैं और उस पृष्ठ से कोड का उपयोग करने की कोशिश की में काम नहीं कर:HttpResponseMessage वेब एपीआई (.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.3031 9 कहता है। मेरे प्रोजेक्ट गुण कहते हैं कि लक्ष्य ढांचा .NET 4.5 है।

वीएस2013 एक्सप्रेस में मेरा इंटेलिसेन्स भी 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' के बीच 'संकलन' तत्व को न भूलें। –

0

कोशिश जोड़ने विधानसभा कॉन्फ़िग फ़ाइल

<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> 

इसके बाद, विधानसभा जानकारी के साथ अंदर विधानसभाओं टैग को जोड़ने आप पहले mansioned, तो यह इस तरह दिखता है:

<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

यह मेरे लिए चाल है। यह किसी भी मुद्दे के साथ संकलित नहीं है, लेकिन जब तक मैंने विजुअल स्टूडियो को पुनरारंभ नहीं किया, तब तक इंटेलिसेन्स ने इसे रेजर व्यू इंजन में एक त्रुटि के रूप में दिखाया। –