gpt4 book ai didi

c# - 我什么时候应该将 HttpResponse.SuppressContent 设置为 true

转载 作者:行者123 更新时间:2023-12-01 23:12:34 25 4
gpt4 key购买 nike

我编写了 HTTP 模块来验证 url,如果它有特殊符号,我将重定向到根目录。

我找到了如何执行此操作的不同示例,有人建议将 HttpResponse.SuppressContent 属性设置为 true。但我不确定那种情况会发生什么。 msdn说是指示是否向客户端发送HTTP内容,那么是否意味着重定向不会由客户端发起,而是由服务器发起?

最佳答案

ASP.Net 默认缓冲处理程序的输出。 Response.SupressContent 阻止将该内容发送到客户端,但 header 仍会发送。

示例 1 - 带缓冲和 SupressContent=false 的输出

<%@ Page Language="C#" AutoEventWireup="true"  %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("No Supression");
}
</script>
Dynamic Content
<%= DateTime.Now %>

原始 Http 响应:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
Date: Sun, 03 May 2015 23:29:17 GMT
Content-Length: 44

No Supression
Dynamic Content
5/3/2015 5:29:17 PM

示例 2 - 带缓冲和 SupressContent=true 的输出

<%@ Page Language="C#" AutoEventWireup="true"  %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Suppress it all!");
Response.SuppressContent = true;
}
</script>
Dynamic Content
<%= DateTime.Now %>

原始 Http 响应:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html
Date: Sun, 03 May 2015 23:34:13 GMT
Content-Length: 0

请注意此输出没有内容。

您的问题具体是关于重定向会发生什么。

示例 3 - 当 SupressContent=true 时重定向

<%@ Page Language="C#" AutoEventWireup="true"  %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Response.Redirect("~/SomewhereElse.aspx");
// Exception was thrown by previous statement. These two lines do not run.
Response.Write("Redirect Supress Content");
Response.SuppressContent = true;
}
</script>
Dynamic Content
<%= DateTime.Now %>

原始 Http 响应:

HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: /SomewhereElse.aspx
Date: Sun, 03 May 2015 23:35:40 GMT
Content-Length: 136

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/SomewhereElse.aspx">here</a>.</h2>
</body></html>

注意还有一具尸体。那是因为我们不允许请求完全处理。默认情况下,Response.Redirect 将引发异常,并且 Response.SupressContent 属性未设置为 true。如果我们将 false 传递给第二个参数,它看起来就像上面的示例。

示例 4 - 当 SupressContent=true 时重定向,并且 Response.Redirect 不会抛出异常。

<%@ Page Language="C#" AutoEventWireup="true"  %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Response.Redirect("~/SomewhereElse.aspx", false);
Response.Write("Redirect Supress Content");
Response.SuppressContent = true;
}
</script>
Dynamic Content
<%= DateTime.Now %>

原始 Http 响应:

HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html
Location: /SomewhereElse.aspx
Date: Sun, 03 May 2015 23:37:45 GMT
Content-Length: 0

关于c# - 我什么时候应该将 HttpResponse.SuppressContent 设置为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29995844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com