问题标签 [instancecontextmode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
347 浏览

c# - Mono 下 WCF 服务(使用 BasicHttpBinding)的默认 InstanceContextMode 是什么?

将我的代码带到 Mono 3.2.8 后,我惊讶地发现我的服务的行为总是像使用InstanceContextMode.Single. 在 Mono 3.12.1 上也是如此。更清楚地说,我的服务没有标记任何InstanceContextMode属性并使用BasicHttpBinding.

我从微软世界知道默认值InstanceContextMode应该是PerSession,但当然,当BasicHttpBinding使用时,值将是PerCall这篇文章很好地解释了,但同样,在微软的世界里。

对于 Mono,我尝试使用谷歌搜索,但无济于事。这个链接是我能找到的唯一东西,它说只有InstanceContextMode.Single实现了,但是这个文档已经过时了,找不到关于此事的任何更新。

我注意到 Mono 3.12.1,在我明确设置之后InstanceContextMode.PerCall,我最终可以获得想要的行为。

谁能解释InstanceContextModeMono 的默认值和实际行为?很高兴能弄清一些,因为我将不得不维护 Windows 和 Linux 的代码。

0 投票
1 回答
538 浏览

c# - Castle Windsor Wcf 使用 InstanceContextMode.Single 自托管

因此,我在 Windows 服务中实现了一个自托管的有状态 Wcf 服务。
我将此服务用作远程硬件驱动程序(有点)。
由于服务必须强制对底层硬件进行串行访问,我将服务设置为具有以下属性的唯一单个实例:

它可以正常工作,但现在我想让 Castle 为我管理依赖项,麻烦就从这里开始了。
我发现依赖注入和单实例模式不能很好地协同工作(这里是一个参考,但你可以找到更多的谷歌搜索)......

请注意,我不能使用 Castle 提供的标准单例,因为我需要为系统中安装的每个设备使用不同的实例(可以同时有多个)。所以使用 Castle 默认生命周期对我来说不是一个选项。

编辑
根据要求,我添加了用于注册和解析服务的代码,即使我认为它非常标准并且没有什么需要强调的。
这是我用来注册服务的代码:

这是我用来解析服务的代码:

没什么特别的,真的,也许它还是有用的。

问题:有没有人能够让 Castle 和 InstanceContextMode.Single 一起工作?甚至可能吗?
你能分享你的解决方案/想法吗?

0 投票
1 回答
103 浏览

c# - 每次调用实例模式的 WCF 身份验证

我正在开发一个基于 WCF 的 ERP 应用程序。我的服务使用 Per Call 实例模式和并发模式 Multiple。
我正在使用自定义用户名/密码验证器进行身份验证。由于对于 Per Call 服务,服务实例是为每个调用创建的,我不确定如何处理身份验证。

在每个服务请求中发送用户名和密码并在服务器端进行验证是正确的方法吗?
如果是这样,在客户端,我们是否应该存储用户输入的用户名和密码?

如果有更好的基于用户名/密码的身份验证方法,请告诉我。

0 投票
0 回答
28 浏览

wcf - WCF的InstanceContextMode

我有一个由 WCF 创建的 Web 服务,它可以响应客户端的请求,例如添加或更新数据。

让我们调用服务的主要部分Context,因为某些方法(假设方法A)会花费很长时间来处理,但我不希望该方法持有服务器,我将InstanceContextMode枚举设置为PerCall,我希望每个当我调用A时,它将创建一个新实例来服务请求,然后我的服务器可以像往常一样继续为其他服务器提供服务。

但我的问题是,它每次仍然使用主线程(UI线程)来服务,所以当我调用A时,服务器会长时间停止响应,直到A完成。

我错过了什么吗?我是 WCF 的新手,所以如果我有任何错误,请告诉我。

0 投票
0 回答
70 浏览

c# - 新实例 c# 中的 WCF 回调

我一直在开发使用 wcf 与服务器通信的启动器,以便在需要更新时启动用户。

到目前为止,除了从客户端到服务器并返回到客户端的函数链之外,它一切正常,它看起来就像回调在单独的线程上的新实例中,这意味着回调不能反映在 GUI 层中。

我想知道如何让它回调到与它开始时相同的客户端启动器实例,我将回调的接口存储在一个类中,以便在回调特定客户端时使用。

我认为正在发生的事情:

在此处输入图像描述

我想发生的事情:

在此处输入图像描述

0 投票
1 回答
40 浏览

c# - Azure 云服务中的 WCF ServiceBehavoir.InstanceContextMode

有谁知道ServiceBehavoir.InstanceContexMode在 Azure 中托管 WCF 服务时 WCF 会受到怎样的影响?

配置为PerCall实例化并在本地处理多个并发请求的服务在 Azure 中托管时似乎不会处理超过 2 个并发请求。是否有其他设置会限制请求?

0 投票
1 回答
36 浏览

c# - 当 InstanceContextMode 设置为每个会话或每个调用时获取异常

我正在尝试制作一个可以登录并创建“用户”实例然后将其用户 ID 保存在其中的应用程序(用于学习目的)。然后他们可以调用 getUserid 方法并获取他们保存的用户 ID。但是如果我使用single InstanceContextMode,老用户的userid就会被一个新用户代替。所以我正在尝试每个会话模式,但是当我在登录后调用 getUserid 方法时收到下面的异常。

这是我的服务类代码。

这是我的用户类。

这是我的接口类。

将 InstanceContextMode 更改为 per session 后会发生错误,应用程序在单个时运行良好,但新应用程序将替换旧应用程序。那么它是否仍应设置为每个会话?还是我做错了什么?

我是自学 C# 并且是新手,所以如果我问了一些愚蠢的问题,我很抱歉。

0 投票
1 回答
23 浏览

c# - 如何获取声明为单实例模式的方法的执行状态

我已将我的服务行为声明为单实例模式,如下所述

我想从客户端知道DoSomething()的执行状态,确保在它运行时,没有客户端请求应该调用DoSomething()。请帮我找到解决方案?

0 投票
1 回答
167 浏览

.net - InstanceContextMode.Single 是否可用于 WCF basicHttpBinding?

正如我从这篇文章中了解到的:

Single:这将有助于我们在全球范围内共享数据。我们只能创建一个实例,并且相同的实例将在后续调用中被重用。与 Per Session 相同,这将适用于除 basicHttpBinding 之外的所有绑定。

InstanceContextMode.Single 不适用于 basicHttpBinding。

但根据这个答案,它有效。

这篇文章增加了混乱。

我想得到明确的答案和解释。

0 投票
0 回答
20 浏览

c# - WCF 服务文件锁定与 InstanceContextMode.PerCall

正如标题已经让你想知道的那样,这不应该被视为独家或吗?按照我理解 PerCall 的方式,每个新请求都应该创建一个新的 Service 对象,以及一组新的变量等等。那么文件上的锁怎么可能仍然存在呢?

想象一下,在 Request #1 期间文件没有正确关闭,不应该在 Request #1 结束时处理巨大的 Service 对象来处理对象吗?或者文件上的锁定是否可能不在服务对象手中,而是在内部 Windows api 机制的深处,在某种程度上,随着请求 #1 的结束,文件锁定仍然存在(不正确关闭发生),锁还在吗?回收了应用池后,锁已经没有了,但是InstanceContextMode.PerCall的设置不应该有同样的效果吗?

我将不胜感激对此的任何技术解释,嗯,我必须给它贴上标签的现象。我们不能打电话给 Andrew S. Tanenbaum,每次我们都不能处理这种问题,你不同意吗?但我想了解这类问题的内在循环。