如何将数据发送到Web服务器场中除查询字符串之外的其他页面

本文关键字:字符串 查询 其他 数据 服务器 Web | 更新日期: 2023-09-27 18:23:45

我有一个webFarm应用程序和一个HTML图像控件,如下所示

<img id="logo" runat="server" src="" width="200" height="300" />

我正在从代码后面设置此图像的scr,如下所示-

string mapId = "1234"; // mapId can vary
logo.Src = "./logo.aspx?mapId=" + mapId ;

这里logo.aspx是一个简单的aspx页面,包含以下page_load代码-

徽标.aspx

 protected void Page_Load(object sender, EventArgs e)
 {
     Response.Clear();
     Response.ContentType = "image/jpeg"; 
     int mapIdValue= int.Parse(Request.Params["mapId"]); // mapId from querystring
     string data = someFunction(mapIdValue); // to get image in Base64 String format
     Response.BinaryWrite(Convert.FromBase64String(data));  
     Response.End();    
 }

这很好用。

我的问题是,我不想在查询字符串中发送mapId,因为它是公开给用户的。那么,将mapId从我的页面发送到logo.aspx的可能方法是什么呢?
我不能使用会话或HttpContext项集合,因为它是一个Web场

我试过使用previousPage,但对我不起作用。

对此有什么想法吗?

如何将数据发送到Web服务器场中除查询字符串之外的其他页面

由于浏览器将在随后的独立请求中检索图像,因此服务器需要能够识别此新请求中的映射id。通常情况下,在web服务器场中使用会话并非不可能,但它需要某种状态服务器/数据库,服务器场中的所有服务器都可以共享。

如果您无法在web场中使用会话,则需要将一些信息传输到新请求中使用的客户端,以识别地图。与您选择的方式无关,客户端可以获得一些id信息。即使您不想使用查询参数,我仍然更喜欢使用查询参数而不是使用cookie将id移交给客户端。主要原因是,如果你在一个页面上有几个地图,它也会起作用。

为了隐藏客户端的真实id,您可以创建一个人工id,例如可以用于检索图像的GUID。你需要存储人工id,这样你才能识别地图。

您可以限制人工id,使其仅在一段时间内、多个请求内或对特定用户有效。这样,客户端只能在非常有限的时间内使用人工id。

当然,这需要一些努力,但在Webfarm中也应该是一种稳定的方式。

它可能是有用的。请参阅下面的链接http://www.c-sharpcorner.com/UploadFile/gopenath/Page107182007032219AM/Page1.aspx