问题标签 [operationcontext]

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 投票
1 回答
245 浏览

.net - 我可以在任何 .NET 客户端中使用 OperationContextScope 吗?

我正在探索在从.NET客户端调用基于java的服务时将soap标头注入到外出消息中。

我看到 OperationContextScope 最适合我的要求,如下所示,并且在初始测试中运行良好。我想确保我没有做任何错误,因为我的应用程序是 .NET 控制台批处理。在 .NET 控制台应用程序的上下文中使用此类会有什么问题吗?

我通过传递 wsdl 和 xsd 使用 SVCUITIL 为 JAVA 服务创建了一个代理。

0 投票
1 回答
812 浏览

wcf - OperationContextScope 与 MessageInpectors

帮助我理解这两者之间的差异。根据我的说法,无论您使用什么 .NET 应用程序(如 WCF、控制台、Web 等),都可以使用 Operation ContextScope,如果您正在调用任何其他服务(如 WCF 或基于 Java 的服务),则可以在任何地方使用它[这不会在 ASMX 服务的情况下工作]将标头添加到传出消息中。

如果是这样,那么为什么我们需要在任何客户端添加 MessageInspectors 来添加标头?OperationContextScope 比 MessageInspector 简单得多。有人阐明了这两个的正确用法吗?

0 投票
3 回答
2062 浏览

c# - OperationContext 在使用 .net 4.6.2 的异步方法后为空

在调用异步操作(并且我的 threadid 更改)OperationContext后,我遇到了 null的问题。

我知道这是一个已知问题,我已经提出了一些关于该问题的 StackOverflow 问题。

您可以在此处.net 4.6.2阅读该问题的修复程序。

OperationContext.Current 异步改进

WCF 现在能够将 OperationContext.Current 包含在 ExecutionContext 中,以便 OperationContext 流经异步延续。通过这一改进,WCF 允许 CurrentContext 从一个线程传播到另一个线程。这意味着即使在对 OperationContext.Current 的调用之间存在上下文切换,它的值也会在方法的整个执行过程中正确流动。

为了得到这个支持,我需要做些什么特别的事情吗?我正在使用 VS 2013,将框架更新为4.6.2并安装了开发包。我已经将我的项目更改为使用,但在异步调用后Framework 4.6.2我仍然得到一个空值。OperationContext

0 投票
2 回答
365 浏览

c# - 如何确定(在服务器端)WCF 客户端用于连接的合同(多个合同)?

考虑以下:

我有一台主服务器和几台位于不同位置的服务器,它们可以与主服务器通信。此外,(GUI)客户端可以连接到每个服务器。

所以我有一个众所周知的公共接口:

此外,服务器支持回调合约,以便主服务器可以在与其连接的服务器上触发请求。

这意味着服务器有 2 个已实施的合同。因此,当我在主服务器上迭代所有订阅者(在Subscribe我缓存所有)并为客户端调用回调合约时,它就会超时!OperationContext我曾预料到某种合同不匹配。除了操作超时之外的任何东西(并且立即!)?!?

我还试图找出客户端用于连接的合同名称(OperationContext.Current)。但这也没有成功。它IServerService在这两种情况下都说OperationContext.Current.EndpointDispatcher.ContractName

服务器端是否有可能OperationContract确定客户端在连接时使用了哪个?

当然,我可以通过一种方法扩展服务器接口,SubscribeServer但这对我来说似乎相当难看。

编辑

正如建议的那样,我确实实施了一个MessageInspector. 但是在AfterReceiveRequestIClientChannel中可以成功投到ICallback

更奇怪的是调用堆栈已经包含ReliableDuplexSessionChannel

这是否意味着如果我的服务类实现了IServerService定义了回调合同的服务类,那么所有连接的客户端都通过双工代理进行路由?无论客户使用(或实施)的合同如何?

0 投票
1 回答
447 浏览

c# - 如何在 IDispatchMessageInspector 中获取异常对象?

我的WCF应用程序使用IDispatchMessageInspector一些高级监控 -发生错误时和未发生错误时

我正在寻找一种方法来获取该IDispatchMessageInspector.BeforeSendReply方法时服务中发生的异常,因为我需要根据异常类型执行特定操作。

不是在寻找修改\记录我的错误,因为我已经使用自定义IErrorHandler.

我考虑过OperationContext在我在时添加例外,IErrorHandler并在我回到时简单地阅读它IDispatchMessageInspector,但我更喜欢内置的东西。

当我在IDispatchMessageInspector.BeforeSendReply方法中时,有什么方法可以获取异常?也许在 OperationContext 的某个地方?

0 投票
0 回答
2060 浏览

c# - OperationContext.Current 和 HttpContext.Current 在 OWIN 托管的 Web API 2 中为空

我正在将一些 WCF 服务移至 Web API。

OperationContext.Current通常在 WCF 中用于日志记录和暂存目的。

但我看到 HttpContext.Current 和 OperationContext.Current 为空。

我使用了一个框架,它使用 OperationContext.Current 来获取当前线程的执行上下文。因此,如果我选择其他方式,我必须将我的自定义方法添加到我试图避免的框架中。

问题:

  • 我可以采用什么解决方法?
  • 如果必须“添加到框架”,我可以使用什么来获取当前上下文?

OWIN启动:

使用调用启动

WebApp.Start<Startup>(rootUri);

CustomFilterAttribute.cs

0 投票
0 回答
318 浏览

c# - WCF 在 OperationContext 中设置用户 ID

我在我的 WCF 服务应用程序中有一个自定义验证器,我在其中使用标准 Microsoft 身份表验证用户名和密码。

此函数从用户返回我的数据,包括用户 ID(Guid)

现在我想在 operationContext 中添加用户 ID,以便稍后在其他功能中使用用户 ID

但是当我这样做时,我收到错误消息“对象引用未设置为对象的实例。” 这并不奇怪,因为我没有创建它的实例。但我不知道怎么做

所以我的问题是如何从我的 Validate 函数中将 UserID 保存在 OperationContext 中,以便我可以在其他函数中重用 userID。

0 投票
1 回答
1342 浏览

c# - 无法从 OperationContext 向 MassTransit 消息添加标头?

我正在尝试向包含来自 WCF Web 应用程序上当前登录用户的信息的 Masstransit 消息添加标头。

所以在我的网络应用程序中,应用程序启动时我有以下内容:

我使用 IoC 容器IBusControl在应用程序中只创建一次(单例范围),然后将 IBusControl 注入 Web 服务。

请注意,OperationContext.Current当我创建服务总线时不存在,我希望c= > c.Headers.Set(...)在请求上下文中调用lambda

现在,当用户提出请求时,我使用的是请求-响应模式(尽管我认为这并不重要)

问题是,当执行此代码时,Masstransit 尝试将标头添加到消息中,OperationContext.Current显然null它运行在与用户调用不同的线程上。

奇怪的是,最终 Masstransit 开始UseSendExecute从正确的线程调用,一切都开始工作了。而且我必须重新启动 IIS 才能再次复制错误(!?)。

有人遇到过这个问题吗?谢谢。

我知道我可以在发布消息时添加标头,但我希望所有源自 Web 应用程序的消息都具有此标头,并希望在全球范围内设置它。

0 投票
3 回答
1325 浏览

c# - 从 C# 中的 OperationContext 读取 JSON 格式的请求内容

我创建了 WCF RESTful 服务,如下所示:

我正在使用Postman调试它并在 BODY 中传递JSON数据,如下所示:

{ "customerID":"RC0064211", "TermsAgreed":"true" }

它在 RequestMessage 中返回的内容如下:

我想要这个 JSON 格式的请求正文。我可以拥有吗?如果不是,我可以为提到的创建 JSON 字符串的另一种方法是什么RequestMessage

0 投票
1 回答
110 浏览

wcf - WCF - 从另一个服务调用 WebGet 请求

我正在集成一个 Web 服务。服务在完成它的事情后要求重定向的 url 参数。

我创建了一个 WebGet 请求,例如: myserviceUrl/redirect/someVal/someOtherVal 并将请求的 url 作为参数提供。

现在,当我将 url 输入浏览器(从 VS 作为 localhost 运行)时,我可以确认它按预期工作。但是,当从 Web 服务调用我作为参数提供的地址时,浏览器会显示一个页面,上面写着

服务 - 不允许的方法。

如果我单击地址栏并按 Enter 键(使用似乎正确的 url),它就可以工作。

这个问题的根源是什么,是域还是身份验证?我该如何解决这个问题。是否有web.config我可以更改的设置或我应该修改的某些请求属性?

我在网上搜索了很多,但似乎找不到有效的解决方案。

编辑:基于 oshvartz 的评论)

这是我出于测试目的从服务初始化中调用的 DLL。

IService1.cs:

服务1.svc: