I am struggling with the HttpResponse.Redirect
method. I thought it would be included in System.Web
but I am getting the
The name 'Response' does not exist in the current context" error.
This is the entire controller:
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web;
using System.Web.Http;
namespace MvcApplication1.Controllers
{
public class SmileyController : ApiController
{
public HttpResponseMessage Get(string id)
{
Response.Redirect("http://www.google.com");
return new HttpResponseMessage
{
Content = new StringContent("[]", new UTF8Encoding(), "application/json"),
StatusCode = HttpStatusCode.NotFound,
};
}
}
}
You can get HttpResponse object for current request in Your action method using the following line:
HttpContext.Current.Response
and so You can write:
HttpContext.Current.Response.Redirect("http://www.google.com");
Anyway, You use HttpResponseMessage, so the proper way to redirect would be like this:
public HttpResponseMessage Get(string id)
{
// Your logic here before redirection
var response = Request.CreateResponse(HttpStatusCode.Moved);
response.Headers.Location = new Uri("http://www.google.com");
return response;
}
In an MVC web application controller, Response isn't accessed in the same way as it would be from an aspx page. You need to access it through the current http context.
HttpContext.Current.Response.Redirect("http://www.google.com");
Headers.Location
在HttpResponseMessage
设置Headers.Location
属性。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.