【问题标题】:ASP.NET Core Web Api log events from an external server来自外部服务器的 ASP.NET Core Web Api 日志事件
【发布时间】:2023-03-18 17:56:01
【问题描述】:

我在 ASP.NET Core Web Api 中有一个服务,它将接收来自 SPA 用户的请求。 每个用户都是电话接线员,隶属于分支机构。 在我的应用程序中,我使用电话提供商。该提供程序提供了一些在我的项目中引用的 DLL。 对于在我的应用程序中发出登录请求的每个操作员,我需要 使用电话提供商提供的可用于集成的 DLL 向电话提供商注册。 在提供者处注册操作员时,将返回一个 IInstance 类型的对象以及操作员的信息。 在这个对象中,我需要注册操作员将发生的事件,例如来电、通话结束等。 所有这些事件都是由电话提供商的服务器触发的,我的应用程序需要监听这些事件, 并通过 SignalR 通知 SPA。

我的问题是:如何保存提供者返回的 IInstance 对象,以及所有已注册的事件, 对于每个登录我的服务的用户?

是否可以使用会话来存储这些实例?

public async Task<IActionResult> Dial(string user)
{
    IInstance instance = _integrationService.Login(user);
    // I need my application to listen to these events, even after the request ends.
    instance.LoggedAgent.IncomingSessionEvent += Agent_IncomingSessionEventHandler
    instance.LogoutEvent += Instance_LogoutEventHandler;

    return Ok();
}

谢谢!

【问题讨论】:

    标签: c# asp.net-core asp.net-web-api .net-core


    【解决方案1】:

    在会话中存储对象的实例,我不确定。我建议您将用户信息存储在会话中,并在需要时使用它来初始化实例。

    如果不是这样,您可以将实例序列化为 xml 并将其保存在会话或数据库中。这样,您可以随时将其反序列化为对象实例。

    我希望它有意义。

    【讨论】:

    • 感谢@Ikenna 的建议。但在这种情况下,我将无法听到提供商服务器发送的注册在每个用户的IInstance 实例中的事件。我需要让这些对象监听事件。注意:我的 api 在服务器上只有一个实例,所以我不会有任何负载平衡问题,例如。
    猜你喜欢
    • 2018-07-18
    • 2017-03-07
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多