问题标签 [wcf-behaviour]
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.
wcf - 如何同步调用 WCF 服务
我有一个 WCF 服务,我正在使用 VS 2010 中的“添加服务引用”创建客户端。
问题是服务被异步调用,尽管“生成异步操作”选项未选中。
那么我怎样才能同步调用服务呢?这种行为在哪里定义(在客户端或服务器上)?我是 WCF 的新手。请多多指教
客户端是一个控制台应用程序。
我没有选中“生成异步操作”。即使这样,代理也包含以下几行,表明该方法是异步调用的。不知道为什么:)
wcf - 如何以编程方式读取 WCF 路由器上的当前筛选表
我们有一个现有的 wcf 路由器,其配置如下:
我们希望能够查询路由器以询问“给定请求,您将路由到哪个端点?”
有没有办法通过 API 以编程方式执行路由?例如,通过将返回端点名称的路由方法运行请求
wcf - SoapUI 得到响应,但没有 .Net 客户端
我正在尝试从 .net 客户端访问 https Java webservice,但总是以“504 Gateway Timeout”异常结束。
我可以使用 SoapUI 从同一个 Web 服务获得响应。
我还注意到 SoapUI 和 .net 客户端的请求肥皂消息并不相似。我的问题是,错误的消息格式是否会导致“504 网关超时”问题?如果是的话,我如何修改.net 客户端中的soap 消息?
这是两个不同的应用程序生成的请求肥皂消息:
肥皂界面
.NET 客户端
wcf - 如何为 IIS 托管的 WCF 服务上的所有操作添加 OperationBehavior?
我有一个自定义的 OperationBehavior。我想一次将它应用于所有操作。不幸的是,不能为整个服务或 web.config 配置 OperationBehaviors。
在测试应用程序中托管 WCF 服务时,我可以执行以下操作:
但是如何在 IIS 托管的 Web 应用程序中执行此操作?
我试图进入OperationContext.Current.Host.Description.Endpoints
,Application_Start
但在任何操作开始之前当然OperationContext.Current
不可用,所以我的方法失败了。
wcf - 如果输入具有所需属性的空节点,则返回 WCF 捕获错误
我创建了一个使用 Unity/Unity.WCF/Unity.Interceptors 进行故障处理的 WCF 服务。
现在,如果我执行 SOAP 请求并且不在请求中包含所需的节点 - 服务方法执行 - 我抛出异常并且我的拦截器将其变成 SOAP 错误。
例子:
我可以使用调试器单步执行服务调用 - 在验证请求对象时抛出异常,并且我的拦截器将其变成 SOAP 错误:
现在 - 我们的测试人员为所需参数提供了一个空节点,如下所示:
并且该服务返回以下错误消息:
问题是 - 这个请求永远不会到达我的服务,所以我不能对这个错误消息做任何事情。我如何影响这里发生的事情?
这让我想起了 MVC 中的一些模型绑定——我可以影响绑定行为吗?
wcf - 在集线器之外获取 SignalR 用户(Hub.Context)
有没有办法在集线器之外获取当前的 signalR 请求用户?我可以在集线器方法中使用 Hub.Context.User,但是如果集线器方法调用任何其他底层?Wcf 服务调用 - 一个额外的 BehaviorExtensionElement 用于添加带有当前用户身份名称的 wcf 消息头。
是的,我发现 DefaultHubManager 获取了集线器,但我不确定它将是当前请求的集线器,而不是并发请求或新请求集线器,因为在 ResolveHub 结束时,我看到以下代码运行
Obviuosly 我可以将用户从集线器方法传递到 wcf 调用,但它需要重构以从 wcf 行为移动到使用用户名显式设置请求字段。我也可以依靠 HttpContext.Current 从 cookie 中获取信息吗?
wcf-behaviour - 为什么我以编程方式添加的 FaultContract 无法识别?
我试图让我的 WCF 服务总是抛出详细的错误,即使没有明确抛出它们。为了实现它,我实现了:
一个 ErrorHandler,其 IErrorHandler.ProvideFault 将非故障错误包装为 FaultException
ServiceBehavior 扩展,附加此处理程序并向每个操作添加此 FaultException 的故障描述,因此客户端可能会这样捕获它。
我用错误处理程序属性修饰了我的服务(最初我有两个不同的 IServiceBehavior 实现,分别用于 ErrorHandler 和 Operation.Faults)。
我还确保新的 FaultDescription 中的数据集与我在合同上定义 FaultContract 时检查的数据集相同。
无论我尝试什么,在我的合同上使用 FaultContract 作为属性时,客户端都会正确捕获错误,但是当在运行时通过 ApplyDispatchBehavior 附加它时,只会捕获一般的 FaultException。显然,其他一切(错误包装和抛出)都在工作,只有在运行时向每个操作添加 FaultContract 失败。
请帮忙...
这是代码:
错误处理.cs
GeneralServerFault.cs
IContractService.cs
合同服务.cs
我省略了客户端和主机的代码
c# - 使用 ClientBase 调用 wcf 服务时如何设置端点行为名称
我在数据库中有客户端端点,而不是在 web.config 中。我正在使用具有多个构造函数的 ClientBase,我可以在其中传递绑定、地址等,并且可以调用客户端 wcf 服务。我在 web.config 中定义了绑定配置和行为配置。我可以在使用 ClientBase 时传递这些名称。但是我没有找到该类的任何属性或构造函数,我可以在其中传递已在 web.config 中定义的 EndpointBehavior 名称。我可以看到我可以添加 IEndpointBehavior 实例,但我不想使用它,而是更喜欢只传递在 web.config 中定义的端点行为名称。
任何帮助,将不胜感激。
谢谢。
json - WCF json错误处理程序导致异常
我在端点中配置了两种行为:
- 一种是 json 序列化,它与这里的示例基本非常相似。重要的是以下几点:
- 另一个用于错误处理。这样当抛出异常时,将向客户端发送一条 json 格式的消息。代码取自此处(答案以:“这是基于上面的一些信息的完整解决方案:”)。
当我只使用行为 1 时,一切正常。当我添加第二个行为时,我得到以下异常:
{"ExceptionType":"System.InvalidOperationException","Message":"传入的消息具有意外的消息格式 'Raw'。操作的预期消息格式是 'Xml'、'Json'。这可能是因为 WebContentTypeMapper尚未在绑定上配置。有关详细信息,请参阅 WebContentTypeMapper 的文档。"}
这是我的 web.config 的样子:
有任何想法吗?
json - BizTalk WCF-WebHttp 发送端口的 WCF 行为扩展未填充日期 Http 标头
我有一个 BizTalk 2013 应用程序(不是 R2),需要将 Json 文档发送到外部供应商的 RESTful api。供应商需要三个 Http 标头:
内容类型:应用程序/json
日期:ISO8601 UTC 格式
授权:自定义身份验证。使用包含上述日期值的构造字符串通过 HMACSHA1 哈希运行
在 BizTalk 中,我的出站 (xml) 消息发送到发送端口,有一个自定义管道组件使用 JSON.Net 转换为 Json。到目前为止,一切都很好。为了添加每条消息唯一的标头,我创建了一个实现 IClientInspector 和 IEndpointBehavior 的 WCF 行为扩展。在 BeforeSendRequest() 中,我获得了对请求的 HttpRequestMessageProperty 的引用。
我可以成功地将 ContentType 标头和 Authorization 标头添加到 Headers Collection。我无法添加 Date 标头 - 没有错误,只是在使用 Fiddler 检查时没有标头值。
我在某处读到 Date 是一个受限制的标题,对于一种解决方法,我可以使用 Reflection 来解决它。例如
那也没有用。我真的很困惑: 1. 为什么我的请求中根本没有 Date 标头?2.如果有一个,我怎么能操纵它,因为我需要给它是“限制的”?
我尝试了两种不同的选择: WCF 行为扩展:
和发送管道中的自定义管道组件
在任何一种情况下,我都可以设置 Content-Type、授权和测试日期 - tweDate 只是为了测试,但我不能设置实际的 Date 标头。