使用 XmlSerializer 和 WCF SOAP 添加根 xmlns

2024-03-30

我有一个由客户从第三方提供的 XML 架构文档生成的类文件。我应该能够将这个生成的类用于客户的 SOAP Web 服务,但我遇到了一些问题。

我创建了一个ServiceContract接口,这样我就可以使用 WCFChannelFactory连接到 Web 服务,如下所示:

[ServiceContract(Namespace = "http://theircompany.co.uk/theirapp/v1")]
[XmlSerializerFormat]
public interface IWebService
{
    [OperationContract]
    EPSStatus serviceNotifyDataEventSet(
        [XmlElement(Namespace = "http://www.thirdparty.org/thirdapp")] DataEventSet dataSet
    );
}

Both EPSStatus and DataEventSet在我生成的类文件中。重要的部分DataEventSet:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.thirdparty.org/thirdapp")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.thirdparty.org/thirdapp", IsNullable=false)]
public partial class DataEventSet {
    //...
}

当我现在尝试打电话时IWebService.serviceNotifyDataEventSet我得到以下 SOAP 正文(在其服务器上启用 WCF 跟踪时发现):

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <serviceNotifyDataEventSet xmlns="http://theircompany.co.uk/theirapp/v1">
        <dataSet>
            <dataEvents xsi:type="q1:DAInt" xmlns="" xmlns:q1="http://www.thirdparty.org/thirdapp">
                <id>47245361157</id>
                <time>
                    <tick_time>141728877218</tick_time>
                    <time>2012-06-28T10:07:57.218+01:00</time>
                    <time_type>OSACBM_TIME_MIMOSA</time_type>
                </time>
                <value>42</value>
            </dataEvents>
            <id xmlns="">0</id>
            <site xmlns="">
                <category>SITE_SPECIFIC</category>
            </site>
            <time xmlns="">
                <tick_time>141728877218</tick_time>
                <time>2012-06-28T10:07:57.218+01:00</time>
                <time_type>OSACBM_TIME_MIMOSA</time_type>
            </time>
        </dataSet>
    </serviceNotifyDataEventSet>
</s:Body>

因此,我可以调用 Web 服务,并且看起来好像我的数据已正确序列化,但是在服务器端dataSet即将为零。我还从一个与以下主体一起工作的客户那里得到了跟踪:

<soap:Body>
    <serviceNotifyDataEventSet xmlns="http://theircompany.co.uk/theirapp/v1">
        <dataSet xmlns="http://www.thirdparty.org/thirdapp">
            <dataEvents xmlns:q1="http://www.thirdparty.org/thirdapp" xsi:type="q1:DAReal" xmlns="">
                <id>47245361408</id>
                <time>
                    <tick_time>141730618844</tick_time>
                    <time>2012-06-28T10:36:58.843+01:00</time>
                    <time_type>OSACBM_TIME_MIMOSA</time_type>
                </time>
                <value>12.34</value>
            </dataEvents>
            <id xmlns="">0</id>
            <site xmlns="">
                <category>SITE_SPECIFIC</category>
            </site>
            <time xmlns="">
                <tick_time>141730618843</tick_time>
                <time>2012-06-28T10:36:58.843+01:00</time>
                <time_type>OSACBM_TIME_MIMOSA</time_type>
            </time>
        </dataSet>
    </serviceNotifyDataEventSet>
</soap:Body>

我能看到的唯一区别是根命名空间设置在dataSet在工作数据包上:<dataSet xmlns="http://www.thirdparty.org/thirdapp">。在我的数据包上,根本没有指定名称空间。

我的问题是,我的分析听起来合理吗?如果是,有什么方法可以让根 xmlns 在我的设备上正确输出dataSet?


我现在已经设法使用相对简单的方法使其发挥作用。幸运的是,从 XML 模式生成的代码xsd将所有类标记为不带构造函数的部分类。我添加了自己的分部类来定义覆盖命名空间的默认构造函数,如下所示:

public partial class DataEventSet 
{
    [XmlNamespaceDeclarations]
    public XmlSerializerNamespaces _xmlns;

    /// <summary>
    /// Constructor for DataEventSet that sets up default namespaces
    /// </summary>
    public DataEventSet()
    {
        _xmlns = new XmlSerializerNamespaces();
        _xmlns.Add("", "http://www.thirdparty.org/thirdapp");
        _xmlns.Add("o", "http://www.thirdparty.org/thirdapp");
    }
}

现将其连载如下:

<?xml version="1.0" encoding="utf-8"?>
<s:Body xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <serviceNotifyDataEventSet xmlns="http://theircompany.co.uk/theirapp/v1">
    <dataSet xmlns="http://www.thirdparty.org/thirdapp" xmlns:o="http://www.thirdparty.org/thirdapp">
      <dataEvents xsi:type="o:DABool" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <id>47245361157</id>
        <value>true</value>
      </dataEvents>
      <id xmlns="">0</id>
      <site xmlns="">
        <category>SITE_SPECIFIC</category>
      </site>
      <time xmlns="">
        <tick_time>396106152171</tick_time>
        <time>2012-07-20T13:29:12.171Z</time>
        <time_type>OSACBM_TIME_MIMOSA</time_type>
      </time>
    </dataSet>
  </serviceNotifyDataEventSet>
</s:Body>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XmlSerializer 和 WCF SOAP 添加根 xmlns 的相关文章

  • 格式说明符%02x

    我有一个简单的程序 include
  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • 用于在标头更改时重新编译的简单 C 项目的示例 makefile

    有谁有完整的 makefile 可以执行以下操作 如果 HEADER 文件发生更改 则重建项目 cpp 文件在 makefile 中列出 头文件未在 makefile 中列出 头文件允许与 cpp 文件具有不同的名称 部分cpp文件没有头文
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • SSRS ReportViewer 与 XML 嵌入数据源相关的问题

    我有 C WPF 应用程序 我想在 ReportViewer 控件中显示 SSRS 报告 本地报告文件中嵌入了 XML 数据源 从 SQL Server Business Intelligence Development Studio 运行
  • 测量进程消耗的 CPU 时钟

    我用 C 语言编写了一个程序 它是作为研究结果创建的程序 我想计算程序消耗的确切 CPU 周期 精确的循环次数 知道我怎样才能找到它吗 The valgrind tool cachegrind valgrind tool cachegrin
  • 条件类型定义

    如果我有一小段这样的代码 template
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 当Model和ViewModel一模一样的时候怎么办?

    我想知道什么是最佳实践 我被告知要始终创建 ViewModel 并且永远不要使用核心模型类将数据传递到视图 这就说得通了 让我把事情分开 但什么是Model 和ViewModel一模一样 我应该重新创建另一个类还是只是使用它 我觉得我应该重
  • Xamarin Forms Binding - 访问父属性

    我无法访问页面的 ViewModel 属性以便将其绑定到 IsVisible 属性 如果我不设置 BindingContext 我只能绑定它 有没有办法可以在设置 BindingContext 的同时访问页面的 viewmodel root
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • 如果找不到指定的图像文件,显示默认图像的最佳方式?

    我有一个普通的电子商务应用程序 我将 ITEM IMAGE NAME 存储在数据库中 有时经理会拼错图像名称 为了避免 丢失图像 IE 中的红色 X 每次显示产品列表时 我都会检查服务器中是否有与该产品相关的图像 如果该文件不存在 我会将其
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调
  • 如何在 ASP.NET Core 中注入泛型的依赖关系

    我有以下存储库类 public class TestRepository Repository

随机推荐

  • 使用 php SimpleXML 解析 XML 命名空间

    我知道这个问题已经被问过很多次了 但我无法得到任何适合我的情况的建议 我已经在网上和这里搜索并尝试了一切 但没有任何效果 我只需要使用命名空间 cap 解析此 XML 并且只需要其中的四个条目
  • jQuery 查找值然后替换 SRC

    任何人都可以看到这段代码有什么问题 它只是不起作用 我在尝试着 获取 product variants option 0 的值 搜索 preload 相关图像并 然后将 div image img src 更改为该图像 jQuery doc
  • Delphi 中的“local”指令

    我正在调试一些代码 在 SysUtils pas 中偶然发现了这一行 procedure ConvertError ResString PResStringRec local local 关键字到底有什么作用 似乎 ConvertError
  • 从 Bootstrap 3 中选择的表单元素中删除箭头

    我想删除右侧时钟图标旁边显示的向上 向下箭头 这是图像 这是 HTML div class form group div
  • MATLAB 中的嵌套 for 循环非常慢(预分配)

    我正在尝试学习 MATLAB 遇到的第一个问题是从静态相机和移动物体的图像序列中猜测背景 首先 我只想对一段时间内的像素进行平均值或中位数 所以它是我想将一个函数应用于 4 维数组的其中一行 我已将 RGB 图像加载到具有以下尺寸的 4 维
  • 解释并举例说明“get”、“delete”、“post”、“put”、“options”、“patch”、“head”方法?

    我正在写一个网络服务 有人可以解释一下上述方法并给我一些例子吗 感谢您的帮助 GET应该用来检索数据没有其他效果 但是您可以在 url 中使用查询参数来使用 get 发布数据 但这不是一个安全的方法 The POST方法用于请求源服务器接受
  • PairGrid 上的 Seaborn 相关系数

    是否有 matplotlib 或 seaborn 图可以与 g map lower 或 g map upper 一起使用来获取每个二元图显示的相关系数 如下所示 plt text 是手动映射以获得下面的示例 这是一个繁琐的过程 您可以将任何
  • 是否可以使用 HTML/CSS 进行简单计算,但无需 JavaScript 或后端?

    许多 Webview 插件 例如 Android Webview 的默认行为是禁用 JavaScript 执行 在这些情况下 是否仍然可以执行简单的计算 例如 将文本框中的两个数字相加 而不使用任何 JavaScript 代码 仅使用纯 H
  • 如何动态生成blazor的@bind-Value?

    我正在使用 Blazor 我想创建一个动态生成的表单 它是网格的一部分 数据的实体类型被传递到网格 这是表单的基础 我现在面临的问题是 bind Value 需要它才能编辑给定的实体 I use Blazor表带 https blazors
  • 如何本地化reverseGeocodeLocation的地址结果?

    我的 iPhone 应用程序应该根据用户的纬度和经度解析地址 verseGeocodeLocation 工作正常 但结果是英文的 有没有办法将结果本地化为其他语言 在苹果或其他地方找不到任何有关它的信息 我使用的代码是 CLGeocoder
  • 我熟悉 Ruby /DL,但不确定如何使用具有返回参数指针的 C 函数调用

    我在这个模块中有这个功能 require dl require dl import module LibCalendars extend DL Importer dlload cal2jd o extern int iauCal2jd in
  • 如何在 Android 中清除 Realm 中的数据库

    我想在用户按下注销按钮时清除整个数据库 并在另一个用户登录时加载新数据 我尝试了很多解决方案 例如 try Realm deleteRealm realmConfiguration catch Exception ex throw ex A
  • 具有默认方法的接口何时初始化?

    在搜索 Java 语言规范来寻找答案时这个问题 https stackoverflow com questions 23093470 java order of initialization and instantiation 230934
  • python 对二维列表进行排序

    我有一个像这样的二维列表 a 42 206 45 40 45 205 46 41 46 205 47 40 47 202 48 40 48 202 49 38 实际上这些是二维欧几里得空间中的坐标 我想以接近点按顺序排列的方式对其进行排序
  • 用Maven项目的源代码生成具有Maven目录结构的jar?

    我有一个使用 Maven 构建的 Web 应用程序 但我想用maven项目生成一个具有正确maven目录结构的JAR 我试过this http www sonatype com people 2010 01 how to create tw
  • 无法挤压 dim[1],预期维度为 1,得到 499

    我正在尝试制作一个自动编码器 但遇到了上述错误 查看 Stack Exchange 上的其他帖子并没有帮助 这是完整的错误 InvalidArgumentError Can not squeeze dim 1 expected a dime
  • 为什么在 AngularJs 中创建组件时使用方括号表示法

    当我们创建控制器 服务等组件时 AngularJs 中的方括号有什么用 我在示例中看到了 ngRoute ngFileUpload 它有什么用呢 它是角度依赖注入的定义方式 因此您可以在不破坏源代码的情况下丑化它 例如 控制器可以定义两个依
  • 如何按顺序执行jquery函数?

    正如标题所说 如何维护 控制Jquery中函数的执行顺序 我知道我们可以通过建立许多事件处理程序addEventListener 但不能保证它们的执行顺序 让我引用一下 请注意 即使处理程序按照它们的顺序触发 成立后 该订单不受标准保证 测
  • 如何使用 Jest 测试输出是随机的函数?

    如何使用 Jest 测试输出是随机的函数 像这样 import cuid from cuid const functionToTest value gt cuid a Math random b new Date toString c va
  • 使用 XmlSerializer 和 WCF SOAP 添加根 xmlns

    我有一个由客户从第三方提供的 XML 架构文档生成的类文件 我应该能够将这个生成的类用于客户的 SOAP Web 服务 但我遇到了一些问题 我创建了一个ServiceContract接口 这样我就可以使用 WCFChannelFactory