【发布时间】:2009-07-28 15:57:36
【问题描述】:
对于我从事的产品,我在一些 ASP.NET/Castle Monorail 网站上遇到了一个小问题(或者可能不是那么小)。这是一个相当遗留的系统(写得早于我的时间),它使用 GET 请求,并在查询字符串中包含大量信息。我们最近遇到了查询字符串长度限制,对于我们需要传输到服务器的数据量,将数据临时存储在 cookie 中也是不合理的(我们已经远远超过了每个 cookie 4096 字节的限制,而且我们设置了很多 cookie,因此我们可能也接近或处于每个域的 cookie 限制。)
我想知道除了 POST(在某些情况下可以更改为 POST 请求,但可能不是全部)之外,是否有任何替代方法可以解决此问题。我希望 StackOverflow 上的其他人也遇到过类似的问题,并且有一些神奇的解决方案(即使用 javascript 压缩数据,编码为 base64,传递给单个查询字符串项?只是不确定是否有任何库可以压缩以与 .NET 3.5 中的内置压缩类兼容的方式使用 javascript 处理数据。)
更新:
我最终选择的解决方案是 POST 到临时控制器。这个临时控制器拉取大量数据,将其卡在共享会话中(生产服务器位于不使用粘性会话/IP 的大型多银行服务器场中),并对实际控制器执行 GET,后者拉取来自共享会话的数据。不是最高效的解决方案,但它解决了问题。
【问题讨论】:
-
请解释为什么您不能发布。恕我直言,这里唯一真正的解决方案是发布。
-
使用 POST 是有意义的,所以使用它。
-
我正在使用的代码最终包含了许多用 VB6 和 COM 对象编写的旧代码。如果它只是新代码,POST 可能是一种选择......如果它只是非常旧的遗留代码,实施 POST 将花费比我必须修复和交付的时间更长的时间。
-
为什么需要更长的时间?这只是一种方法!
-
我同意乔希的观点。如果是 Monorail 应用程序,那么处理 Web 请求是 Monorail 的责任,您可以轻松地将 GET 更改为 POST。
标签: .net asp.net javascript query-string castle-monorail