HttpRequest与HttpWebRequest的区别

3
我有一个网页,可以拦截POST请求,从请求中提取用户名,并根据用户名转发请求。现在我注意到传入的HttpRequest具有Params属性,而HttpWebRequest没有。为什么会这样?是否有办法在我的传出HttpWebRequest中捕获Params数据?
谢谢。
2个回答

4
它们只是两个不同的.Net类,位于两个不同的包中:
   System.Object
      System.MarshalByRefObject
         System.Net.WebRequest
            System.Net.HttpWebRequest
   System.Object
      System.Web.HttpRequest
如果您计划重构任何代码(或编写任何新代码),我建议使用Web.HttpRequest,因为HttpWebRequest是一个旧的.Net 1.1东西。
在我看来...

1
感谢您的回复。我的理解是HttpRequest是一个服务器类,基本上代表着一个传入的请求。如果您想要转发请求,您必须使用.Net HttpWebRequest重新创建请求。这不正确吗?如果我可以只创建另一个HttpRequest,那就太好了。 - user1373121
1
我不太确定HttpWebRequest“是一件旧事”(就像等待被弃用)。以新的异步编程模型为例,使用“async”关键字并返回Task<>(在.net 4.5中新添加)。HttpWebRequest已经提供了异步读取功能。http://msdn.microsoft.com/en-us/library/system.net.webrequest.getresponseasync.aspx - Zé Carlos

1

首先,它们是完全不同的类,在不同的命名空间中。话虽如此,

Params 是一个包装器,公开了查询字符串参数和 POST 数据。当您构造请求时,无法直接写入 params 中,您必须指定要添加的实际数据类型。因此,您应该将它作为查询字符串添加到目标 URL 中,或者将其添加到请求体中并将其设置为 POST。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接