MVC 5如何实现POST,其行为类似于重定向到内容的GET

时间:2015-10-12 12:26:00

标签: asp.net-mvc asp.net-mvc-5

我的客户重定向到https://domain.com/Controller/GetInfo?Querystring方法。现在我的查询字符串危险地接近2K限制,所以我需要重现这种行为,但将我的查询字符串打包到消息的内容中。由于尝试使用内容进行GET是异端(等等),我将使用POST。但是,由于重定向没有内容,我无法重定向到POST。

所以,我正在寻找的是解决此问题的最佳MVC 5模式:我需要提供大量内容,但我希望在我的远程服务器上托管生成的页面(即好像我已重定向)

此外,由于我在azure中使用负载均衡服务器,我更愿意尽可能维护我的干净无状态服务器(否则我将不得不引入会话缓存)。

1 个答案:

答案 0 :(得分:1)

@AntP在上面的评论中是绝对正确的。如果您的查询字符串接近2K,那么您就是在滥用它。

如果您正在引用某个特定对象,那么您只需要包含该ID或其他一些标识,然后使用它来从您的数据存储中再次查找。

如果没有对象的持久记录,那么您可以使用SessionTempData之类的内容将其存储在一个请求和下一个请求之间。

无论如何,无法使用请求正文重定向,也意味着无法使用POST重定向。这样做的原因是重定向不是服务器所做的事情,而是客户端。服务器仅建议客户端转到不同的URL。然后由客户端(Web浏览器)发出对该URL的新请求。由于客户端是发出请求的客户端,因此它决定该请求中包含哪些数据,哪些数据不包含在服务器中。