I read http://www.asp.net/web-api/overview/security/working-with-ssl-in-web-api and tried to use the code from that page:
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);
}
}
}
When I build I don't get an error, but runtime gives this error:
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'.
I have got a reference to System.Net.Http in my references folder of my project. If I look at it's properties, it says Version 4.0.0.0 and Runtime Version 4.0.30319. My project properties says target framework is .NET 4.5.
My IntelliSense in VS2013 Express also doesn't want to pick up anything to do with HttpResponseMessage or HttpRequestMessage.
I've tried removing the reference and re-adding it, but to no avail.
Any help would be tremendously appreciated.
Well, I might be late, but just in case someone else faced this problem.
First of all, you need to find a string:
<compilation debug="true" targetFramework="4.5"/>
And make it not self-closing tag like that:
<compilation debug="true" targetFramework="4.5">
</compilation>
Next, add assemblies tag inside with assembly information you mansioned before, so it looks like this:
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</assemblies>
</compilation>
And rebuild your solution. Take a look at this link.
I had tried this highly suggested solution (I found this as accepted answer in many similar questions here in SO)
In your
Web.Config
write this and rebuild the solution<system.web> <compilation debug="true" targetFramework="4.0" /> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </assemblies> </compilation> </system.web>
But unfortunately, I had no luck with this. At last, I found a solution which worked for me and saved my day :)
References
folder > Add Reference...
System.Net.Http
in the list of assemblies.
Make sure the box next to System.Net.Http
is checked, then click
OK
. If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With