- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有静态数据上下文的 WCF 服务,但没有并发性。它已经运行了一年,没有任何问题,但前几天我们看到了一些奇怪的行为,用户正确地传递了数据,但得到了意想不到的不正确的数据。这确实通过了 F5,所以我们也在研究那里的问题。
在静态上下文中设置每个 session 单并发会不会有任何负面影响?
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.PerSession)]
public class AgencyUserManagementService : IAgencyUserManagement, IDisposable
{
private static UserDataContext _dataContext;
protected static UserDataContext Db
{
get { return _dataContext ?? (_dataContext = new UserDataContext()); }
}
}
public class UserDataContext : DbContext
{
public UserDataContext()
: base("Name=UserDataContext")
{
Database.SetInitializer<UserDataContext>(null);
}
public DbSet<TblAuthor> TblAuthors { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new TblAuthorMap());
}
}
最佳答案
Would there be any negative impacts to having Single Concurrency Per Session
对于这样配置的服务,您将看到的行为是:
Negative impacts to having a Static Context
接下来,在此类服务中定义的静态变量将被该服务的潜在多个实例访问。
如果您有两个并发用户,则两个用户同时使用单个静态 DbContext。
这很可能会导致一些奇怪的问题,例如您所看到的那些。
出于这个原因(以及其他原因),不建议按照您在应用程序中使用的方式使用 DbContext。
您应该为每个服务实例初始化一个新的 DbContext,这意味着上下文将不再在调用者之间共享。 Many IOC containers为 WCF session 提供插件,这可能对此有所帮助。
来源:
关于c# - 在 WCF 服务 C# 中使用静态上下文、ConcurrencyMode.Single、InstanceContextMode.PerSession 有负面影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40384634/
我已开始使用WCF来开发WINDOWS服务托管的calc引擎的第一步。该服务运行良好,但似乎所有调用都只使用一个线程,但我需要它具有可伸缩性并使用多线程。 忽略代码等中的所有跟踪信息,因为这是该应用程
我有一个具有以下设置的WCF服务: NetNamedPipeBinding ConcurrencyMode。多个 InstanceContextMode.Single 现在,我有一个以多线程方式访问此
我阅读了很多关于 wcf 并发和实例上下文模式的文章,我也阅读了有关它的 CodeProject 文章,但仍然无法让它工作。 这是我的客户端代码(如果你问我为什么要使用实例上下文,那是因为我最终会测试
我正在开发一个 WCF 应用程序,该应用程序托管一个自定义对象供许多客户端访问。它基本上可以工作,但因为我需要处理数以千计的并发客户端,所以我需要该服务能够处理并发读取调用(更新频率不高)。我通过在更
我想了解 ServiceBehavior.ConcurrencyMode 属性。 在服务端考虑以下代码: [ServiceContract] public interface IMySercice {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 3 年前。 Improve this ques
有一个处理传入请求的 WCF 服务,并且为每个传入消息生成一个相应的输出消息,该消息被发送到另一个 WCF 服务。消息的顺序很重要,不能打乱。因此,服务应按照服务接收消息的顺序生成相应的输出消息。同时
EF 默认为无并发控制(最后一次写入获胜),这允许丢失更新。 可以通过在 RowVersion 列上设置 ConcurrencyMode=Fixed 来明确配置强制开放式并发检查。 我们如何在所有表的
我是 WCF 新手。我有一个 WCF,其中有许多应用程序使用此服务。而我的要求是,WCF 服务应该同时处理多个请求。我知道这可以通过使用 [ServiceBehavior(ConcurrencyMod
我有一个带有 ConcurrencyMode = ConcurrencyMode.Multiple 选项的 WCF 服务。考虑到服务请求是并发处理的事实,我可以安全地读取传入请求 HTTP heade
我的 wcf 服务配置有问题。我希望每次调用我的服务时都创建一个新的服务实例。对于并发性,我希望一个调用在另一个调用开始之前完成。 因此,如果我有这样的服务: [ServiceBehavior(Con
我是否需要在使用 ConcurrencyMode.Multiple 的 WCF 服务中实现自己的锁定?和 InstanceContextMode.PerCall或 InstanceContextMod
我查看了不同的 WCF 服务行为( ConcurrencyModes/InstanceContextModes ),但没有得到 ConcurrencyMode 之间的区别“单个”/“多个”使用 Ins
客户端通过单个 WCF channel 从单个线程向服务器发送大量消息。 客户端使用 BeginMyMethod(x, b) 发送消息,因为它不希望在处理消息时阻塞。 我们开启了可靠的消息传递,因为我
我们模型中的大多数表都有一个名为“intConcurrencyID”的字段,我们打算将其用于并发检查。我相信在 Database First 环境中启用此字段以进行并发检查的唯一方法是将并发模式设置为
我有一个具有 ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = Concurren
我有一个定义为 ConcurrencyMode.Single 的服务: [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, U
我们有一个 WCF 服务,可以进行大量事务性 NHibernate 调用。有时我们会看到 SQL 超时,即使调用正在更新不同的行并且表被设置为行级锁定。 在深入研究日志后,看起来不同的线程正在进入代码
我有一个带有静态数据上下文的 WCF 服务,但没有并发性。它已经运行了一年,没有任何问题,但前几天我们看到了一些奇怪的行为,用户正确地传递了数据,但得到了意想不到的不正确的数据。这确实通过了 F5,所
我是一名优秀的程序员,十分优秀!