ASP.NET Response.Redirect使用302而不是301

ILo*_*els 28 asp.net redirect

使用以下代码

context.Response.StatusCode = 301;

context.Response.Redirect(newUrl, true);
context.Response.End();
Run Code Online (Sandbox Code Playgroud)

我可以在提琴手中看到它使用302而不是301.我应该在重定向呼叫后设置状态吗?

Ada*_*ler 50

如果您使用的是ASP.Net 4.0,则可以使用Response.RedirectPermanent,它将使用301而不是302.


Kei*_*thS 35

Response.Redirect()将使用重定向的代码覆盖StatusCode属性(302).另外,因为您正在使用带有布尔参数的Response.Redirect()重载,所以如果您想自己调用Response.End(),则应将其设置为False.否则它是多余的,可能会导致错误.

尝试以下(pre-ASP.NET 4.0; Adam Butler的答案涵盖了新的最佳实践):

context.Response.Redirect(newUrl, false);
context.Response.StatusCode = 301;
context.Response.End();
Run Code Online (Sandbox Code Playgroud)

  • +1工作得很好,错误对我来说是缺失的 (2认同)