问题标签 [wcf]

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 投票
3 回答
4561 浏览

wcf - 如何格式化用于执行从 VBScript / ASP 到 WCF 服务的 HTTP 发布的消息并获得响应?

做帖子不是问题!格式化消息以便我得到响应是问题所在。

理想情况下,我能够构建一条消息并使用 WinHTTP 向 WCF 服务(托管在 IIS 中)执行发布并获得响应,但到目前为止,我一直无法构建正常工作的东西。

有没有人有一个这样做的例子是直截了当的?

在 2.0 Web 服务世界中,这就像在 web.config 中设置一个设置以使服务响应帖子然后使用正确的参数调用适当的 Web 方法一样简单。在 WCF 世界中似乎没有类似的东西。

到目前为止,我没有选择将使用者(vbscript 端)转换为 .NET。

假设此时在端点我可以转换为使用任何可用的绑定,直到 .NET 3.5 支持的任何绑定,但同时如果这可以使用 WsHttpBinding 或 BasicHttpBinding 完成,那么正确的答案将是描述如何在 VBScript 的上下文中为这些绑定中的任何一个设置消息格式,或者如果没有办法这样做,那么就说,你不能这样做。如果这可以使用 WebHTTPBinding 完成,那么我还没有找到实现它的方法,因为我已经研究了 WebInvoke 属性并且无法创建从 VBScript 到 WCF 的正常工作的测试。

假设发布的数据类型是字符串,响应也是字符串。

这个问题也与 WinHTTP 无关。我已经知道如何使用 WinHTTP 执行发布,这是构建 WCF 服务将响应的消息的问题。

虽然我可以使用 WinHTTP 以外的其他东西来执行从 ASP 到 WCF 服务(如 XMLHTTP)的发布,但我仍然存在构建 WCF 服务将响应的 XML 消息的问题。我已经对此进行了尝试,但仍然无法理解我需要使用哪种格式来实现这一点。

从理论上讲,我知道所有 WCF 服务需要的是格式正确的消息。我只是无法正确构建消息,通常虽然每个人都对如何发送消息有一些建议,但我还没有看到有人给出一个实际示例来说明在这种情况下正确的消息格式是什么,因为每个人都习惯于使用 .NET 发送消息,在这种情况下一切都已为您完成。

0 投票
3 回答
7208 浏览

wcf - WCF - 错误/异常与消息

我们目前正在争论是否最好通过 WCF 通道抛出错误,而不是传递指示状态的消息或来自服务的响应。

错误来自 WCF 的内置支持,您可以在其中使用内置的错误处理程序并做出相应的反应。然而,这会带来开销,因为在 .NET 中引发异常可能会非常昂贵。

消息可以包含必要的信息来确定您的服务调用发生了什么,而无需引发异常的开销。然而,它确实需要几行重复的代码来分析消息并确定其内容之后的操作。

我们尝试创建一个可以在我们的服务中使用的通用消息对象,这就是我们想出的:

如果我的所有服务调用都返回此项目,我可以持续检查“成功”属性以确定一切是否顺利。然后,如果需要,我会在指示出现问题的事件中收到错误消息字符串,以及包含 Dto 的通用项目。

异常信息必须记录到中央日志服务,而不是从服务传回。

想法?评论?想法?建议?

进一步澄清我的问题

我遇到的错误合同问题是传达业务规则。

例如,如果有人登录,并且他们的帐户被锁定,我该如何沟通?他们的登录显然失败了,但由于“帐户锁定”的原因而失败。

我也是:

A) 使用布尔值,在消息帐户被锁定的情况下抛出错误

B)返回带有相关信息的AuthenticatedDTO

0 投票
4 回答
14147 浏览

.net - 如何处理 WCF 的 MSMQ 绑定中的消息失败

我创建了一个 WCF 服务并正在使用 netMsmqBinding 绑定。

这是一个简单的服务,它将 Dto 传递给我的服务方法并且不期望响应。消息被放置在一个 MSMQ 中,并且一旦被拾取就插入到一个数据库中。

确保没有数据丢失的最佳方法是什么。

我尝试了以下两种方法:

  1. 抛出异常

    这会将消息置于死信队列中以供手动阅读。当我的服务开始时,我可以处理这个

  2. 在绑定上设置 receiveRetryCount="3"

    经过 3 次尝试后 - 瞬间发生,这似乎将消息留在队列中,但我的服务出错了。重新启动我的服务会重复此过程。

理想情况下,我想做以下事情:

尝试处理消息

  • 如果失败,请等待该消息 5 分钟,然后重试。
  • 如果该过程失败 3 次,则将消息移动到死信队列。
  • 重新启动服务会将死信队列中的所有消息推回队列中,以便对其进行处理。

我能做到这一点吗?如果有怎么办?你能给我指出任何关于如何最好地利用 WCF 和 MSMQ 来处理我给定场景的好文章吗?

任何帮助将非常感激。谢谢!

一些附加信息

我在 Windows XP 和 Windows Server 2003 上使用 MSMQ 3.0。不幸的是,我无法使用针对 MSMQ 4.0 和 Vista/2008 的内置有害消息支持。

0 投票
1 回答
438 浏览

wcf - WCF Oracle 适配器和 UDT

有什么方法可以使用带有当前 WCF 适配器的 Oracle UDT?

0 投票
4 回答
4116 浏览

wcf - WCF DataContracts 和基础数据结构

我想知道通过 WCF 服务公开哪些对象有意义 - 我应该将 WCF 序列化规范添加到我的业务实体,还是应该实现一个转换器,将我的业务实体映射到我想通过我的 WCF 公开的 DataContracts服务?

现在我有不同级别的实体:DataAccess、Business 和 Contract。我有转换器可以将实体从 DataAccess 映射到 Business,从 Business 映射到 Contract,反之亦然。实施和维护这些非常耗时且非常乏味。与此相关的最佳实践是什么?

如果我使用的是诸如 NHibernate 或实体框架之类的 OR/M,我应该直接从 ORM 中公开实体,还是应该像现在一样抽象它们?

0 投票
3 回答
11265 浏览

.net - 使 WCF 更易于配置

我有一组由桌面应用程序动态连接的 WCF Web 服务。

我的问题是 WCF 需要工作的非常详细的配置设置。让 SSL 工作涉及自定义设置。让 MTOM 或其他任何东西工作需要更多。你要压缩吗?又来了...

WCF 真的很强大——你可以使用许多不同的方式来连接,但似乎都涉及到很多详细的配置。如果主机和客户端不完全匹配,您将很难破译错误。

我想让桌面应用程序更容易配置——最好是某种自动发现。桌面应用程序的用户应该能够输入 URL,然后它会完成其余的工作。

有谁知道这样做的好方法?

我知道 Visual Studio 可以为您设置配置,但我希望桌面应用程序能够基于各种不同的服务器设置来完成。

我知道 VS 的工具可以在外部使用,但我正在寻找桌面应用程序的用户不必是 WCF 专家。我知道 MS 故意让这变得过于复杂。

是否有任何方法、机制、第 3 方库或任何东西可以自动发现 WCF 设置?

0 投票
2 回答
2964 浏览

wcf - WCF REST 缓存 - 客户端和服务器端

我写了一个 RESTful WCF 服务。合并电子标签,使标头过期。

从浏览器使用缓存时,缓存效果很好。但是,当从 WCF 通道工厂或 .NET Web 请求对象调用缓存时,缓存是如何工作的?

因此,在我的网站在向我返回 304 未修改响应时调用 WCF RESTful 服务的情况下。我该如何处理。浏览器检测到这一点并从其缓存中返回未修改的版本。

但是,当客户端不是浏览器时,我是否需要编写自己的缓存版本,类似于浏览器缓存的方式?

任何帮助或见解将不胜感激。

0 投票
1 回答
1339 浏览

wcf - 在 IIS 中托管具有编程设置的 WCF 终结点

我需要在 IIS 中托管一个公开 wsHttpBinding 的 WCF 服务。使用我的 web.config 中的 system.serviceModel 设置,该部分运行良好。

我现在需要的是通过客户端也使用的配置程序集来设置配置(如 maxReceivedMessageSize 和其他选项)。

这怎么可能?我在我的 .svc 文件中看不到任何句柄,就像在我的客户端中一样,无法重载绑定配置。我怀疑这是因为它在应用程序启动时由 ISS 自动处理,这与您必须手动声明客户端/通道的 Windows 服务不同。

我说得对吗?他的问题的解决方案(如果我仍然想在 IIS 中托管)是否会删除所有配置,而是创建一个 HttpHandler 来处理启动时的托管?

如果我是对的,我想我只是浪费了大量的空间来写这篇文章,但我不禁认为我错过了一些东西。

0 投票
2 回答
1018 浏览

.net - Editing Autogenerated DMBL file for WCF Service

In our project we have a standard auto-generated designer.cs file, linked to a DBML file, that contains all our object classes that map onto our database tables.

We want to pass these objects directly through a WCF Service and so they need decorating with the [DataContract] and [DataMember] attributes where appropriate. What is the best approach to doing this so the changes won't get wiped out when the designer.cs file is re-generated upon a change to the database scheme or some other change.

Partial classes are an option, but if the property I want to decorate with the DataMember attribute is already defined in the autogenerated designer.cs file then I can't add the same property definition to the partial class as this means the property will have been defined twice.

0 投票
3 回答
64148 浏览

wcf - 在 WCF 3.0 中获取客户端 IP 地址

显然,您可以在 WCF 3.5 中轻松获取客户端 IP 地址,但在 WCF 3.0 中则不行。有谁知道怎么做?