在 C# 中使用可选参数从 Web 引用调用 WebMethod

2024-03-22

我使用 .Net Webservices 创建了一个带有 2 个可选参数的虚拟 Web 服务,但是在实际产品中,我们将有更多可选参数(想想:查询过滤器)。问题在于,在调用 Web 服务时不可能省略可选参数,这意味着在针对实际 Web 服务进行开发时,每次调用 Web 服务时都可能存在数十个 NULL 值。

现在这个虚拟 Web 服务仅包含以下内容,以支持 2 个可选字符串参数:

[WebMethod]
public string HelloWorld(String PARAM_1="", String PARAM_2="")
{   return "";   }

在 WSDL 中,它确实显示了这些参数,最小值为 0,最大值为 1:

<s:element minOccurs="0" maxOccurs="1" name="PARAM_1" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PARAM_2" type="s:string"/>

问题在于:当通过 Visual Studio 2010 中的 Web 引用添加此 Web 服务时,它确实会使用 HelloWorld 方法创建服务对象。但是它没有考虑可选参数。它创建一个没有可选参数的函数 HelloWorld。它总是需要 PARAM_1 和 PARAM_2,因此无论我们实际想要使用哪个参数,可选参数都必须填充 NULL。

VS2010 从 Web 参考中生成的定义是这样的,显示了问题:

public string HelloWorld(string PARAM_1, string PARAM_2) {
object[] results = this.Invoke("HelloWorld", new object[] { PARAM_1, PARAM_2});

有没有一种方法可以在 VS2010 中使用带有可选参数的 Web 服务,而不必在每次调用时强制将潜在的数十个可选参数设为 NULL?我们希望继续使用 Visual Studio 中方便的网络引用,而不是一直被迫这样做。


可选参数是特定于语言的构造。基于 SOAP 的 Web 服务对可选参数一无所知,因为基于 SOAP 的 Web 服务与语言无关。

如果您希望服务调用具有可选参数,并且希望获得可选参数的客户端感觉,则需要使用自己的代码重写生成的存根方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中使用可选参数从 Web 引用调用 WebMethod 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 如何使用 Mysql Joins 而不是嵌套子查询来获得相同的结果?

    我有一些嵌套子查询 结果非常慢 我正在努力用 Mysql Joins 重写相同的代码 我希望有人可以帮助我 我想从数据库中除播放列表中的歌曲之外的所有歌曲中获取数据 之后我只想要播放列表中的歌曲 在这里你可以看到我的查询 提前致谢 Quer
  • 记录内存访问足迹

    I found mtrace https github com aclements mtrace克莱门茨博士 虽然很有用 但是在我需要的情况下却不能正常工作 我打算使用该记录来了解不同场景下的内存访问模式 有人可以分享相关经验吗 任何建议将
  • 在哪里可以找到“mysqldump”退出代码列表?

    我知道exit code 0 means No error I got exit code 2 这是什么意思 我在哪里可以看到完整的列表mysqldump退出代码 取自 MySQL 5 1 59 中的 client mysqldump c
  • Nagios(返回码 255 超出范围)

    我收到错误 返回代码 255 超出范围 http localhost nagios http localhost nagios 但是当我从 shell 运行命令时 它运行良好 如果您使用 NRPE 并收到 NRPE 无法读取输出 错误是因为
  • 为什么 CFileDialog::DoModal() 挂起?

    我在Win XP平台上用VS 6 0开发了一个相当大的C 程序 现在已经迁移到运行Win 7的新机器 仍然运行VS 6 0 该代码包含一个函数 用于实例化并运行 CFileDialog 对象 以从特定的初始目录查找并打开具有特定扩展名的 A
  • Linux:如何杀死睡眠

    更多的是一个概念性问题 如果我写一个 bash 脚本来做类似的事情 control c echo goodbye exit trap control c SIGINT while true do sleep 10 user wants to
  • AnimatedVectorDrawable 作为窗口背景。是否可以?

    我正在尝试使用AnimatedVectorDrawable作为放置在窗口背景中的启动动画 我使用官方给出的例子https developer android com reference android graphics drawable A
  • 确定用户是否属于本地管理员组

    我的问题 我正在使用 PInvoked Windows API 函数来验证用户是否属于本地管理员组 我正在利用GetCurrentProcess OpenProcessToken GetTokenInformationand LookupA
  • 广播时不支持回调

    在这里 我遇到了使用 nodejs 在 socket io 中进行回调的一个问题 io sockets to usersocketid emit receivemsg success 1 data message function deli
  • 了解如何正确处理 C++ 类常量

    考虑以下 namespace MyNamespace class MyClass public Public area private Private area protected Protected area Class Namespac
  • 如何加载位于 .NET Core 控制台应用程序文件夹中的程序集

    我正在 NET Core 平台上制作一个控制台应用程序 并且想知道如何加载程序集 dll 文件 并使用 C 动态功能实例化类 它看起来与 NET 4 X 有很大不同 并且没有真正记录下来 例如 假设我有一个类库 NET Core 它只有一个
  • 使用 Python 模拟 Xbox 控制器输入

    我希望我的 python 程序能够模拟 Xbox 控制器输入 如果可能的话 模拟拇指杆和开 关按钮 我找到了有关在 python 中使用 ctypes 模拟键盘输入的主题 例如这里 Python 模拟 keydown https stack
  • 通过 powershell 从 txt 文件中获取今天日期的特定文本

    我有一个文本文件 与此类似 This is a sample data This is a sample data This is a sample data Sat Jun 06 08 17 01 2015 WARNING Cannot
  • MySQL 中的 SELECT 整数范围。例如。 1,2,3,4,...,n;

    我需要在 MySQL 中选择整数范围 像这样的东西 SELECT RANGE 10 20 AS range returns 10 11 12 13 14 20 Why 我想从尚未注册的范围中选择随机电话号码 这是想法 SELECT RANG
  • 控制Android的默认音乐播放器或任何其他音乐播放器

    如何控制android或任何其他播放器的默认音乐播放器 我所说的控制是指暂停 播放 下一个等 我是否必须绑定服务 我尝试过使用IMediaPlaybackService但它不起作用 肯定有一条出路 因为我在安卓市场上看到过控制音乐播放器的应
  • NSString 字体大小特定于框架宽度

    我在用drawRect对于文本显示 调用NSString 我正在尝试使用sizeWithFont自动调整字体大小 缩小 默认字体大小为 17 如果不适合宽度大小 则使用循环将字体大小减小 1 谁能帮助我如何实现这个 现在的例子就很好了 我只
  • 找不到 id=1 的用户

    I ve a current user处理身份验证的方法 应用程序控制器 rb protect from forgery helper method current user def current user current user Us
  • 如何在使用 webdriver 查找元素时在 xpath 中使用撇号 (')?

    我需要在 xpath 表达式中使用撇号 我需要在使用 webdriver 查找元素时使用它 我需要使用下面的 Xpath 表达式 input text WE d like to hear from you 在查找元素函数中使用上述表达式时
  • 如何清除 Internet Explorer 8 中的本地存储值

    我使用 IE8 和 jstorage 库来存储数据来代替 cookie 这一切都很好 直到我想清除存储的值 在 Chrome 中 可以通过导航到内容设置页面来实现此操作 然而 在 IE8 中 它仅提供清除 cookie 的选项 而不会清除我
  • 在 C# 中使用可选参数从 Web 引用调用 WebMethod

    我使用 Net Webservices 创建了一个带有 2 个可选参数的虚拟 Web 服务 但是在实际产品中 我们将有更多可选参数 想想 查询过滤器 问题在于 在调用 Web 服务时不可能省略可选参数 这意味着在针对实际 Web 服务进行开