问题标签 [messagecontract]

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 回答
167 浏览

c# - 使用 messagecontract 上传文件

我一直在关注各种教程,这些教程解释了如何通过上传文件WCF,当我尝试MessageContract在客户端和服务器之间共享包含的类时遇到了一些问题。

基本上我的问题如下:

RemoteFileInfo MessageContract在一个单独的类库中有一个类:

然后我与服务器和客户端共享该库。这应该意味着客户端不应该实现自己的RemoteFileInfo类。但是,在我将 .dll 添加到我的客户端项目然后使用Add Service Reference启用Reuse Types后,它仍然RemoteFileInfo会在服务引用的命名空间内重新创建类,这会在它本身与我最初在其中声明它的类库中的类型之间产生歧义。

MessageContract所以我的问题是,如何在客户端和服务器之间共享一个已声明为 a 的类?我需要这样做,因为我OperationContract需要一个RemoteFileInfo对象,并且我想保留我在原始RemoteFileInfo类中声明的相同属性。

我的OperationContract

我希望能够在客户端上准确地调用该方法在服务合同中的声明方式。到目前为止,即使我Generate message headers在添加服务引用时使用该选项,我最终还是得到了一个uploadFile具有byte[]参数而不是流的方法,并且我需要它是一个流。

有任何想法吗?

编辑:我打算发布一个客户端配置,但我需要提到我正在为 Windows 应用商店应用程序开发,所以我没有传统的 app.config。

下面是 WCF 测试客户端为客户端配置生成的内容:

我将如何在没有 app.config 的 Windows 商店应用程序中复制它?

0 投票
1 回答
731 浏览

c# - 内部复杂类型中不正确的 Soap 命名空间

我正在使用 MessageContract。

这里生成了错误的 SOAP 消息:

<a :ANotherBool> 、 <a :AnotherStringValue> - 不正确命名空间必须是“ http://my.site/rev2015 ”。

这是我的代码:

怎么做?

0 投票
1 回答
3633 浏览

c# - 如何实现 WCF 流操作,将数据流入、处理、流回(使用 MessageContracts)?

我需要一个 WCF 服务操作,它接受一个大流,处理它并返回该流。

我使用了一篇关于大数据流的 MSDN 文章作为我需要的参考。我听从了那篇文章中的建议。

提前问问题:

  1. 我想知道为什么我在合约中指定生成的服务操作没有返回类型?

  2. 如果这是预期的行为,我应该如何让它传递一个流并返回一个处理过的流?

详情

因为我需要使用 MetaData 来伴随输入和返回流,所以我根据需要使用 MessageContract 属性装饰了这些类。

这是我的实现的简要介绍:

消息合约:

服务合同:

服务实施:

客户端:

在客户端,然后生成服务引用,并按如下方式调用服务:

MSDN 文章使用的合同与官方 WCF 示例中的合同完全相同。

Stream EchoStream(流数据)

但是没有等效 MessageContract 实现的示例。示例版本具有预期回报。

更新

  • 我注意到服务引用具有使用预期方法签名生成的任务/异步方法。也许这意味着当使用带有 Stream 属性的 MessageContract 时,返回一个类似结构的对象,那么您将不得不异步调用它。我没有在任何地方看到它记录在案。将尝试使用这些方法 -没有工作,因为我们想要同步操作。
  • 我还尝试使用ChannelFactory替代生成的代理客户端:

    /li>
0 投票
1 回答
65 浏览

c# - WCF 请求格式

我正在将旧版 Web 服务转换为 WCF 服务。前端应用程序当前正在使用此服务。但到目前为止,前端不会使用新的 WCF 服务,因此我们计划将请求重新路由到我们的新服务。这里的问题是新的 WCF 服务应该能够处理旧的输入请求,并且应该能够以完全相同的格式发回响应。

当我生成一个wsdl并将其添加到soapUI项目中时。Body 被包装在带有方法名称的标签中(“UserVerification”是操作合同名称),有没有办法在不使用消息合同的情况下处理这个问题(我使用传统类型作为输入参数,所以无法更改它们)

现在它是这样的:

我希望它是这样的

0 投票
1 回答
84 浏览

wcf - WCF - 在没有 [MessageHeader] 的情况下使用 [MessageContract]

这个问题很简单。如果我们不使用 [MessageHeader] 属性,而仅使用 [MessageBodyMember],那么使用 [MessageContract] 属性而不是 [DataContract] 是否有意义。在那种情况下,将 [DataContract] 与 [DataMember] 一起使用是一样的吗?

0 投票
2 回答
237 浏览

c# - 删除 MessageContract 中的 MessageBodyMember 是否被视为重大更改?

考虑以下 ServiceContract-Interface:

使用 MyClass 蜜蜂:

MyClass现在更改为如下所示:

使用此 WCF 服务的客户端是否需要进行其他更改才能使用新的服务定义?

另外,如果我要另外更改C以拥有新的会发生什么Order = 1

0 投票
0 回答
37 浏览

c# - WCF 中的可互操作序列化程序

我以简单的方式定义了 WCF 服务操作,例如

其中 AddRqst 定义为

我看到的问题是WCF序列化的方式和它期望请求的方式是由参数名称包装的(这是来自内存)

我无法为此文件分发架构,因为 WCF 喜欢添加并期望为参数添加额外的包装器。它应该看起来像我设计的那样

我知道MessageContract并且我已经测试了通过将 AddRqst(以及 AddResp)更改为以下内容来删除包装,因为通过使用 messagecontracts 您假设只有 1 个合同。

我的问题如下。有没有办法只使用数据合同来做到这一点?我所有的操作都有 1 个参数。如果不是,我修改 AddRqst 的方式是不是最好的方式?

0 投票
1 回答
117 浏览

.net - 带有 MessageContract 和 DataContract 的 WCF 结构不起作用

我有一个具有多种自己的数据类型的 WCF Web 服务。这种结构不起作用。我可以调用 WSDL,但如果我尝试调用它会抛出异常的方法:

接收对http://adress的 HTTP 响应时出错。这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。

我读过这篇文章WCF Web 服务错误:“服务端点绑定不使用 HTTP 协议”?,但我没有找到我的解决方案。我搜索 not set DataMember 并尝试<httpRuntime maxRequestLength..>在 web.config 中进行设置,但这并没有改变任何东西。我的结构有什么问题?

0 投票
0 回答
202 浏览

wcf - WCF,Soap -> 如何消除 [MessageBodyMember] 中的元素名称

我正在用 C# 中的 WCF 构建一个 SOAP 服务器。我有一个来自客户的请求,看起来像这样:

我必须获取此请求并将 Elements localAuthorisationList之间的数据存储在硬盘上的文件中。我做了一个 [MessageContract] 看起来:

但是使用 WCFTestClient 我得到以下请求:

我的问题是,我的元素太多(localAuthorisationList 或 localAuthorisation)。我可以消除一个元素吗?如何?

谢谢您的帮助

汤姆

0 投票
1 回答
843 浏览

c# - WCF:如果一个是 Stream,你如何将多个 MessageBodyMember 添加到 MessageContract

我需要所有 3 个项目都在正文中,以便客户端可以使用它们,他不能修改 Header 中的数据(前 2 个在MessageHeader第一个中):

我收到的错误是:

我该如何解决?