问题标签 [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.
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 商店应用程序中复制它?
c# - 内部复杂类型中不正确的 Soap 命名空间
我正在使用 MessageContract。
这里生成了错误的 SOAP 消息:
<a :ANotherBool> 、 <a :AnotherStringValue> - 不正确。命名空间必须是“ http://my.site/rev2015 ”。
这是我的代码:
怎么做?
c# - 如何实现 WCF 流操作,将数据流入、处理、流回(使用 MessageContracts)?
我需要一个 WCF 服务操作,它接受一个大流,处理它并返回该流。
我使用了一篇关于大数据流的 MSDN 文章作为我需要的参考。我听从了那篇文章中的建议。
提前问问题:
我想知道为什么我在合约中指定生成的服务操作没有返回类型?
如果这是预期的行为,我应该如何让它传递一个流并返回一个处理过的流?
详情:
因为我需要使用 MetaData 来伴随输入和返回流,所以我根据需要使用 MessageContract 属性装饰了这些类。
这是我的实现的简要介绍:
消息合约:
服务合同:
服务实施:
客户端:
在客户端,然后生成服务引用,并按如下方式调用服务:
MSDN 文章使用的合同与官方 WCF 示例中的合同完全相同。
Stream EchoStream(流数据)
但是没有等效 MessageContract 实现的示例。示例版本具有预期回报。
更新
- 我注意到服务引用具有使用预期方法签名生成的任务/异步方法。也许这意味着当使用带有 Stream 属性的 MessageContract 时,返回一个类似结构的对象,那么您将不得不异步调用它。我没有在任何地方看到它记录在案。将尝试使用这些方法 -没有工作,因为我们想要同步操作。
我还尝试使用
/li>ChannelFactory
替代生成的代理客户端:
c# - WCF 请求格式
我正在将旧版 Web 服务转换为 WCF 服务。前端应用程序当前正在使用此服务。但到目前为止,前端不会使用新的 WCF 服务,因此我们计划将请求重新路由到我们的新服务。这里的问题是新的 WCF 服务应该能够处理旧的输入请求,并且应该能够以完全相同的格式发回响应。
当我生成一个wsdl并将其添加到soapUI项目中时。Body 被包装在带有方法名称的标签中(“UserVerification”是操作合同名称),有没有办法在不使用消息合同的情况下处理这个问题(我使用传统类型作为输入参数,所以无法更改它们)
现在它是这样的:
我希望它是这样的
wcf - WCF - 在没有 [MessageHeader] 的情况下使用 [MessageContract]
这个问题很简单。如果我们不使用 [MessageHeader] 属性,而仅使用 [MessageBodyMember],那么使用 [MessageContract] 属性而不是 [DataContract] 是否有意义。在那种情况下,将 [DataContract] 与 [DataMember] 一起使用是一样的吗?
c# - 删除 MessageContract 中的 MessageBodyMember 是否被视为重大更改?
考虑以下 ServiceContract-Interface:
使用 MyClass 蜜蜂:
MyClass
现在更改为如下所示:
使用此 WCF 服务的客户端是否需要进行其他更改才能使用新的服务定义?
另外,如果我要另外更改C
以拥有新的会发生什么Order = 1
?
c# - WCF 中的可互操作序列化程序
我以简单的方式定义了 WCF 服务操作,例如
其中 AddRqst 定义为
我看到的问题是WCF序列化的方式和它期望请求的方式是由参数名称包装的(这是来自内存)
我无法为此文件分发架构,因为 WCF 喜欢添加并期望为参数添加额外的包装器。它应该看起来像我设计的那样
我知道MessageContract并且我已经测试了通过将 AddRqst(以及 AddResp)更改为以下内容来删除包装,因为通过使用 messagecontracts 您假设只有 1 个合同。
我的问题如下。有没有办法只使用数据合同来做到这一点?我所有的操作都有 1 个参数。如果不是,我修改 AddRqst 的方式是不是最好的方式?
.net - 带有 MessageContract 和 DataContract 的 WCF 结构不起作用
我有一个具有多种自己的数据类型的 WCF Web 服务。这种结构不起作用。我可以调用 WSDL,但如果我尝试调用它会抛出异常的方法:
接收对http://adress的 HTTP 响应时出错。这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。
我读过这篇文章WCF Web 服务错误:“服务端点绑定不使用 HTTP 协议”?,但我没有找到我的解决方案。我搜索 not set DataMember 并尝试<httpRuntime maxRequestLength..>
在 web.config 中进行设置,但这并没有改变任何东西。我的结构有什么问题?
wcf - WCF,Soap -> 如何消除 [MessageBodyMember] 中的元素名称
我正在用 C# 中的 WCF 构建一个 SOAP 服务器。我有一个来自客户的请求,看起来像这样:
我必须获取此请求并将 Elements localAuthorisationList之间的数据存储在硬盘上的文件中。我做了一个 [MessageContract] 看起来:
但是使用 WCFTestClient 我得到以下请求:
我的问题是,我的元素太多(localAuthorisationList 或 localAuthorisation)。我可以消除一个元素吗?如何?
谢谢您的帮助
汤姆
c# - WCF:如果一个是 Stream,你如何将多个 MessageBodyMember 添加到 MessageContract
我需要所有 3 个项目都在正文中,以便客户端可以使用它们,他不能修改 Header 中的数据(前 2 个在MessageHeader
第一个中):
我收到的错误是:
我该如何解决?