我的客户重定向到https://domain.com/Controller/GetInfo?Querystring方法。现在我的查询字符串危险地接近2K限制,所以我需要重现这种行为,但将我的查询字符串打包到消息的内容中。由于尝试使用内容进行GET是异端(等等),我将使用POST。但是,由于重定向没有内容,我无法重定向到POST。
所以,我正在寻找的是解决此问题的最佳MVC 5模式:我需要提供大量内容,但我希望在我的远程服务器上托管生成的页面(即好像我已重定向)
此外,由于我在azure中使用负载均衡服务器,我更愿意尽可能维护我的干净无状态服务器(否则我将不得不引入会话缓存)。
答案 0 :(得分:1)
@AntP在上面的评论中是绝对正确的。如果您的查询字符串接近2K,那么您就是在滥用它。
如果您正在引用某个特定对象,那么您只需要包含该ID或其他一些标识,然后使用它来从您的数据存储中再次查找。
如果没有对象的持久记录,那么您可以使用Session
或TempData
之类的内容将其存储在一个请求和下一个请求之间。
无论如何,无法使用请求正文重定向,也意味着无法使用POST重定向。这样做的原因是重定向不是服务器所做的事情,而是客户端。服务器仅建议客户端转到不同的URL。然后由客户端(Web浏览器)发出对该URL的新请求。由于客户端是发出请求的客户端,因此它决定该请求中包含哪些数据,哪些数据不包含在服务器中。