Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# HttpWebRequest - How to determine if HTTP 301 Occured?

I'm doing some testing of my HTTP 301 redirects (moved permanently) for an ASP.NET MVC web application.

I've created a test page with the following code:

try
{
    var req = (HttpWebRequest) WebRequest.Create(url);
    resp = (HttpWebResponse) req.GetResponse();
    return Json(new {statusCode = (int) resp.StatusCode});  
}
catch (Exception exc)
{
    return Json(new { statusCode = (int)HttpStatusCode.InternalServerError });
}
finally
{
    if (resp != null) resp.Close();
}

But the problem is, the status code is HTTP 200 (OK), because it's reading the last response (e.g the page it got redirected to).

The URL will hit my redirect controller, which returns this:

return RedirectToRoutePermanent("SomeRoute", new { id = someId });

And that's what i want to capture, not the 200 of the page it gets redirected to.

How do i do it?

like image 860
RPM1984 Avatar asked Aug 03 '11 00:08

RPM1984


People also ask

What C is used for?

C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...

Is C language easy?

Compared to other languages—like Java, PHP, or C#—C is a relatively simple language to learn for anyone just starting to learn computer programming because of its limited number of keywords.

What is C in C language?

What is C? C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972. It is a very popular language, despite being old. C is strongly associated with UNIX, as it was developed to write the UNIX operating system.

What is the full name of C?

In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.


2 Answers

You'll need to turn off automatic redirection following:

req.AllowAutoRedirect = false;
like image 163
porges Avatar answered Oct 06 '22 08:10

porges


Set AllowAutoRedirect to true if you want the request to automatically follow HTTP redirection headers to the new location of the resource.

If AllowAutoRedirect is set to false, all responses with an HTTP status code from 300 to 399 is returned to the application.

you can also set The maximum number of redirections to follow by the MaximumAutomaticRedirections property.

use this to stop auto redirection myHttpWebRequest.AllowAutoRedirect=false;

like image 20
sizar surani Avatar answered Oct 06 '22 09:10

sizar surani