将大型String数据从HTML / Javascript发送到后面的代码

时间:2013-10-22 14:48:12

标签: c# javascript asp.net azure azure-sql-database

我们的应用程序有一些隐藏的字段,像任何其他asp.net应用程序。这里我们使用隐藏字段来存储图像的HTML,这是相当大的。我们在C#代码中使用隐藏字段的值(大HTML字符串)进行进一步处理。

我们倾向于创建4个应用程序实例,我们对天蓝云服务的负载平衡存有疑虑。我们通过javascript在应用程序进程的中途为这些隐藏字段赋值。由于此处理在客户端完成,因此这里没有问题。但是因为azure有多个实例所以如果想在服务器端访问这些隐藏字段(即在我们的C#中),直接访问这些隐藏字段会因为实例更改时的负载平衡而产生任何问题吗?

  

注意:访问这些隐藏字段时,我们的页面不会回发   在服务器端。

我们不清楚实例何时更改,如果我们的页面没有回发那么请求是否会转到同一个实例?这是有保证的吗? 此外,如果页面进行回发,则响应将转到调用请求实例的同一实例。

我们需要在服务器端访问这些隐藏字段的建议或正确方法。这些隐藏的领域对我们非常重要;使用azure的缓存/会话设置对我们来说将变得非常昂贵,因为数据非常大。如果建议是免费实施将是非常有帮助的。因为我们已经在预算紧张的情况下运作。

// 25Oct 2013

我们有一大串数据,主要由从Bing Map获取的HTML组成,我们使用Bing Map div元素的Jquery Selector获取了Bing地图的HTML,我们希望这个HTML字符串是发送到后面的代码。我们在javascript上有这个字符串但是当我们对它后面的代码执行ajax调用失败时。

我们甚至尝试通过POST方法将其发送到正文中,但这又失败了。

 var string = formData; // so long text
        var xhr = new XMLHttpRequest();
        var body = "string=" + encodeURIComponent(string);
        xhr.open("POST", "index.aspx/getString", true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.setRequestHeader("Content-Length", body.length);
        xhr.setRequestHeader("Connection", "close");
        xhr.send(body);

正如Rick所说,我们已经尝试过blob,但问题是将字符串从javascript发送到后面的代码。我们真的陷入了死胡同。

1 个答案:

答案 0 :(得分:1)

您表示缓存对您来说代价很高。虽然使用缓存服务确实会产生一些成本,但您是否考虑过将co-located in-role caching作为替代方案?也许您在现有实例上有足够的额外资源来满足您的需求。如果您选择采用此路线,我上面提供的链接中有一些容量规划链接。

--- 10/24/2013 ---

如果我正确理解您的最新说明,您将在客户端上生成一些要上传到Azure上的Web应用程序的HTML。在Web应用程序中,您使用该HTML生成PDF,我假设客户端稍后会收到该PDF。如果这是您的方案,那么您可以上传HTML并将其存储为blob?这样,Web应用程序的任何实例都可以从blob存储中引用它,而不是将其填充到隐藏字段中。

在您的网络应用中,您可以使用HttpPostedFile从客户端接收文件并将其保存为blob。注意:您可能需要调整最大值。允许发布的大小,因为它默认为4MB,并且您表明您的数据最多可达5MB。

我正在努力帮助你,但你的问题并不是那么清楚。鉴于讨论的背景,即使标题也是误导性的。如果这没有帮助,那么您可能想要编辑您的问题。