问题标签 [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 投票
2 回答
125 浏览

c# - 新添加的 MessageContract 未出现在服务引用元数据中

我有一个名为 Document 的 MessageContract,如下所示:

这在大多数情况下都很好。它出现在智能感知中,我可以很好地实例化它。但我需要添加一个如下所示的新合同:

看起来很简单。我构建了项目并更新了我的服务参考。但是那个类没有出现,我无法实例化它。

关于我在这里做错了什么的任何想法?

0 投票
1 回答
1376 浏览

wcf - 如何摆脱为 MessageContract 生成的 WSDL 中的 ArrayOf

在我的 Web 服务中,我想摆脱通过调用 ...service.svc?singleWsdl 生成的 WSDL 中生成的 ArrayOf... 定义。

目前定义看起来像(我尝试了使用 XmlArray 等的所有品种):

当我获得 WSDL 时,我总是会收到(或多或少 - 取决于 Name 属性等):

<xs:element name="IncidentsResponse"> <xs:complexType><xs:sequence> <xs:element minOccurs="0" maxOccurs="1" name="IncidentList" type="tns:ArrayOfIncident"/><xs:element minOccurs="0" maxOccurs="1" name="Incidents" type="tns:ArrayOfIncident"/> </xs:sequence> </xs:complexType></xs:element>

我真正想要的是直接在元素内列出的类型,例如

<xs:element name="IncidentsResponse"> <xs:complexType> <Incidents><IncidentItem>...</IncidentItem><IncidentItem>...</IncidentItem> </Incidents> <IncidentList><IncidentItem>...</IncidentItem><IncidentItem>...</IncidentItem></IncidentList> </xs:complexType></xs:element>

因此,对实际数据的引用,而不是列表类型 (ArrayOf)。

有什么办法可以做到这一点?如果我得到正确的信息,CollectionDataContract 属性应该可以解决问题,但不知何故它不会......

尤其是当消费客户端是 Java 时,这种额外的间接方式会有点伤害,因为它会使代码膨胀

欢迎任何想法:-)

0 投票
0 回答
6644 浏览

c# - 无法加载,因为它具有 System.ServiceModel.Channels.Message 类型的参数或返回类型或

所有,我在加载 WCF 服务时遇到以下错误。无法加载操作“GetEffort”,因为它具有 System.ServiceModel.Channels.Message 类型的参数或返回类型,或者具有 MessageContractAttribute 和其他不同类型参数的类型。当使用 System.ServiceModel.Channels.Message 或带有 MessageContractAttribute 的类型时,该方法不得使用任何其他类型的参数。

这是服务合同

我不知道发生了什么。我看到类似的帖子说消息合同不匹配。但在这里我返回一个类型 Message 本身。

0 投票
3 回答
6494 浏览

wcf - 如何删除来自肥皂请求

我正在使用 SoapUI Pro 4.6.1 来测试我的 WCF 服务。我的请求看起来像这样

如何从 SOAP 中删除 --Optional:--> 我正在使用消息格式来包装我的数据合同,并且我正在为 DataContract 使用 isRequired 属性。

0 投票
2 回答
2347 浏览

c# - 在 WCF 中自定义 SOAP 标头命名空间前缀

我在此处写了关于在 wcf 生成的 SOAP 消息中自定义名称空间和名称空间前缀的方法。

但是,为了自定义消息的 SOAP 标头,我找不到在 Message 类中覆盖的适当方法。

我想发出这样的信息:

看起来像这样:

不同之处在于第一个标头的命名空间是“if”而不是“f”。

有没有办法使用带有自定义 Message 类的自定义 MessageFormatter 来做到这一点?

0 投票
0 回答
808 浏览

wcf - WCF Messagecontract 的命名空间问题

我们开发了一个使用消息契约作为参数的 WCF。当我为它们生成 WSDL 时,WCF 正在为某些消息合同添加http://schemas.datacontract.org/2004/07/Namesapce,即使我用我的自定义命名空间覆盖了 MessageContract 的命名空间属性。请帮助我覆盖默认命名空间(http://schemas.datacontract.org/2004/07/)。

这是合同和 WSDL 的示例代码

WSDL 生成出来的有

非常感谢任何帮助。

0 投票
0 回答
1014 浏览

c# - WCF OperationContract 和动态参数

我有一个基于编写高度可维护的 WCF 服务的 WCF 服务。使用 CommandService 处理请求:

一切都很好(感谢史蒂夫),但现在我需要添加将文件上传到服务的功能。根据我所阅读的内容以及测试期间收到的错误,WCF 需要在[MessageContract]使用Stream. 所以我装饰了我的命令类并将非流成员放入消息头中,并更新了我的绑定定义以使用流:

不幸的是,当我使用要上传的文件调用服务时,出现错误:

尝试序列化参数 http://somewhere.co.nz/NapaWcfService/2013/11:command时出错。InnerException 消息是 'Type 'System.IO.FileStream' ,数据合同名称为 'FileStream: http://schemas.datacontract.org/2004/07/System.IO ' 不是预期的。

所以我在服务中添加了一个新方法,专门针对文件上传请求:

这非常有效,除非我在方法定义中将AddScadaTileCommand参数更改为dynamic,在这种情况下我会得到与上面相同的错误。这似乎表明属性在用作参数的类型[MessageContract]时未被应用或忽略。dynamic有什么办法可以解决这个问题,还是我需要为涉及流的请求创建单独的方法?

0 投票
1 回答
185 浏览

wcf - 如何定义消息契约以获取此模式?

我如何定义消息契约来获得这种 XML SOAP 格式?

架构:

我创建了如下所述的类文件,但它给出了不同的响应

我的回复是这样的:

如何使用消息合约获得正确的消息?

0 投票
1 回答
108 浏览

c# - WCF 服务在服务器 2003 而不是其他位置上收到 MessageContract 错误

我有一个要连接的 WCF 服务。测试时,它在我的本地机器上运行良好。在运行 Windows Server 2008 的一个测试位置上也可以正常工作。

我们的一台生产机器正在运行 Windows Server 2003,我收到以下错误消息:

我已经查看了错误并知道它的含义,但我很困惑,因为它适用于 2 个位置而不是另一个。是否有关于服务器 2003 或我可能缺少的其他设置导致我们的生产服务器出现问题?代码完全相同。

编辑:我正在使用 .net 4.0

0 投票
1 回答
435 浏览

wcf - 具有字符串返回值(或参数)的 ASMX WebService 强制在 WCF 客户端中生成消息合同

我有一个简单的 ASMX WebService,它看起来像这样

我还有一个与该服务关联的 WCF 客户端。“始终生成消息合同”复选框未选中。WCF 客户端正在生成消息协定类,即使我不希望它这样做。

注意CODEGEN评论。这似乎是这样构造的,因为该string类型在来自 ASMX 服务的 WSDL 中未标记为可空。它没有被标记为 nillable(也没有 maxOccurs=1),因为string.Empty它提供了一个默认值。

如果字符串是复杂类型的成员,我可以将它们标记为[XmlElement(IsNullable=true)],这样就可以解决问题......但我不能在这里这样做,因为它们是函数定义的一部分。

有一个已知的解决方案吗?有没有办法让我的 ASMX 在 WSDL 中将字符串参数和返回类型标记为 nillable?或者有没有办法让我的 WCF 客户端停止生成消息协定,即使存在不可空的参数类型(知道这将删除参数可选性)?