【问题标题】:How to protect a resource that is used by multiple ASP.NET pages?如何保护被多个 ASP.NET 页面使用的资源?
【发布时间】:2014-11-29 11:10:38
【问题描述】:

我正在处理一个包含父页面的项目,该父页面包含两个连接到其他两个子 asp 页面的 iframe 标记。我需要保护一个时间实例,它应该是这样的:在第一个子页面中它应该被锁定,并且当另一个子 asp 页面从中读取时应该被释放。任何人都可以给我一个建议吗?

[WebMethod]
    public static void SetCreatioTimeAndID(DateTime CreationTime, string ID)
    {
        ResourceProtector.Sem.WaitOne();
        SessionHelper.CreationTimeFromEvents = CreationTime;
        SessionHelper.EventID = ID;
    }

这里是调用该方法的jquery函数:

function EventGrid_ItemSelected(sender, e) {
        var item = e.get_item();
        var creationTime = item.Data[0][1];
        var id = item.Data[10];

        PageMethods.SetCreatioTimeAndID(creationTime, id, OnSuccess);
    }

    function OnSuccess(response, userContext, methodName) {
    }

由于我使用的 gridview(ComponentArt 网格)在选择行时没有服务器端事件,因此我必须使用客户端事件来检索选中的行。然后我调用服务器端函数来存储行的日期。如果你喜欢这是整个场景: 当用户在 gridview 上选择一行时,我必须从页面中的 jquery 函数调用服务器函数。问题是这个服务器功能必须是静态的。因此我将它存储在静态 DateTime 对象中,因此当用户按下按钮时,将加载有关该 DateTime 对象的信息。问题是如果另一个客户端连接到服务器并选择一行,我担心 DateTime 对象是

【问题讨论】:

  • 这个实例到底是什么,你是如何分享它的?
  • 它是一个 DateTime 对象。当用户单击网格视图中的一行时,其中一个 asp 页面设置它。我希望这个日期时间对象保持不变,直到它在另一个 asp 页面中的方法中使用。它因为如果另一个客户端在使用这个 DateTime 实例之前连接,那么新客户端这次不能搞砸。所以使用 get s wrong inf back
  • id 想知道的另一件事是,如果不同的客户端连接到 asp 页面;他们有自己的线程来运行吗?我是说服务器是否为具有全新实例的新客户端创建了一个新线程?
  • 每个 request 都有自己的线程。您如何共享此 DateTime 对象?
  • 这是整个情况。当用户在 gridview 上选择一行时,我必须从页面中的 jquery 函数调用服务器函数。问题是这个服务器功能必须是静态的。因此我将它存储在静态 DateTime 对象中,因此当用户按下按钮时,将加载有关该 DateTime 对象的信息。问题是如果另一个客户端连接到服务器并选择一行,我担心 DateTime 对象被覆盖

标签: c# asp.net multithreading semaphore protected-resource


【解决方案1】:

这个链接回答了我的问题。这样我就可以从 javascript 调用服务器上的非静态方法。 这是链接:Call non-static method in server side(aspx.cs) from client side use javascript (aspx)

【讨论】:

    猜你喜欢
    • 2019-08-14
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多