C#MVC应用程序的并发问题

C#MVC应用程序的并发问题,c#,asp.net-mvc,C#,Asp.net Mvc,我正在开发一个web应用程序,在这里我面临一个与并发相关的问题。我的应用程序基本上用于创建用户访问。每个项目都包含一些与访问相关的详细信息和多个位置的详细信息 我的表单布局如下: 用户最多可以添加3个位置。为此,我使用客户端验证。我正在使用SQL Server和实体框架来存储数据 示例: 假设我创建了一个访问,提交后,访问id为121。访问URL可能如下所示: 如果上面的URL在3个不同的系统上运行,那么我的位置验证将不起作用。通过System-1,用户可以添加3个位置,从System-2用户

我正在开发一个web应用程序,在这里我面临一个与并发相关的问题。我的应用程序基本上用于创建用户访问。每个项目都包含一些与访问相关的详细信息和多个位置的详细信息

我的表单布局如下:

用户最多可以添加3个位置。为此,我使用客户端验证。我正在使用SQL Server和实体框架来存储数据

示例: 假设我创建了一个访问,提交后,访问id为121。访问URL可能如下所示:

如果上面的URL在3个不同的系统上运行,那么我的位置验证将不起作用。通过System-1,用户可以添加3个位置,从System-2用户可以添加3个位置,依此类推

但我必须限制我的用户以这种方式添加位置

如何使用一些C#代码解决此问题

解决方案应该是这样的,如果从System-1,有人试图添加位置,同时,如果有人试图从System-2添加位置,则System-2用户应收到如下消息:

此访问版正在其他地方处理,请稍候


处理多次登录的一种简单方法是在服务器上构建一个简单的WebSocket服务器作为服务,该服务器使用一个字典,该字典的值在登录时递增,在注销时递减

登录时,检查该值是否大于您允许的值,如果登录次数过多,则返回一个标志,并将其发送回另一个页面。这样就不需要额外的MVC控制器


JavaScript有一种超级简单的方式与WebSocket服务器进行接口,您可以利用客户端。

尝试使用信号量(或信号量LIM)?请注意,模型视图控制器标记用于回答有关模式的问题。ASP.NET-MVC实现有一个特定的标记。