asp.net - ASP.NET Web服务中的可选参数

标签 asp.net .net web-services asmx

我有一个ASP.NET Web服务。此Web服务工作正常。但是,WSDL列出了一些参数为可选参数(minoccurs = 0),而其他参数则为非可选参数。一些可选参数实际上不是可选参数,其他标记为非可选参数的实际上是可选参数。我想解决此问题,但找不到该信息的来源。

在我看来,所有原始类型(int,boolean等)都是非可选的,所有其他参数都标记为可选。但是,我找不到可以更改此位置的位置。如果请求中缺少原始值,我想为其指定默认值,并指定实际上是可选的非原始参数。我在哪里做?

最佳答案

我假设当您说ASP.net Web服务时,您正在创建具有ASMX扩展名的Web服务。我认为在这种情况下,所有可为空的类型都变为可选,而不可为空的类型变为非可选。

您也许可以手动编辑生成的WSDL文件。但是,如果重新生成了wsdl,则必须重做该工作。

我建议您使用basicHttpBinding切换到WCF(除了服务的名称之外,您的客户端应该不会注意到差异)。

使用WCF,您可以简单地根据需要标记数据契约中的参数:

[DataMember(IsRequired="false")]

关于asp.net - ASP.NET Web服务中的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/995521/

相关文章:

c# - 为什么我的 Html.DropDownList 会生成一个充满 "System.Web.Mvc.SelectListItem"字符串的列表?

.net - Umbraco 学习资源?

java - Spring 启动:run works but java-jar doesn't

c# - 调用 Web 服务时服务器端内存泄漏

c# - 多个搜索框

asp.net - 在 IIS 7 上调试 500 错误

asp.net - 设计决策 - Javascript 数组或 http 处理程序

.net - 获取模拟用户名

C# 进度条直到完成一半才更新

web-services - 5位PIN码比大多数密码更好吗?