Tho*_*mas 4 .net c# asp.net asp.net-mvc
我的代码中有一个简单的重定向:
public ActionResult Redirect()
{
return Redirect("http://url.com");
}
Run Code Online (Sandbox Code Playgroud)
我注意到响应包括响应正文中的以下html:
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: http://url.com
Server: Microsoft-IIS/7.0
Date: Tue, 24 Jul 2012 18:53:52 GMT
Content-Length: 198
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://url.com">here</a>.</h2>
</body></html>
Run Code Online (Sandbox Code Playgroud)
有没有办法从响应正文中删除html?我希望Content-Length在响应主体中没有任何内容时为零.
您可以通过实现自己ActionResult而不是使用内置来实现这一点,内置RedirectResult将发送该HTML.
但是,您不应该 - 用户永远不应该看到该标记,但它主要是遗留问题.还要注意一些浏览器可以设置为不遵循重定向 - 没有那里的主体会使结果变得毫无用处.
如果您仍然需要没有正文的重定向,则此结果类将执行此操作:
public sealed class RedirectResultNoBody : ActionResult
{
private readonly string location;
public RedirectResultNoBody(string location)
{
this.location = location;
}
public override void ExecuteResult(ControllerContext context)
{
var response = context.HttpContext.Response;
response.StatusCode = 302;
response.RedirectLocation = location;
response.End();
}
}
Run Code Online (Sandbox Code Playgroud)
然后将使用这样:
public ActionResult Redirect()
{
return new RedirectResultNoBody("http://url.com");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2822 次 |
| 最近记录: |