我试过四处寻找,但我真的找不到合适的解决方案.很抱歉重复,因为我知道之前有人问过这个问题.我有一个Web服务方法,我想在其中有一个可选参数,例如:
public void MyMethod(int a, int b, int c = -3)
Run Code Online (Sandbox Code Playgroud)
我已经知道我不能使用可空参数,所以我只想尝试使用默认值.问题是,当我调用此方法而不提供参数时,c仍然会获得异常.有什么地方我必须指定它实际上是可选的吗?
Thanksю
我想用这个签名构建一个web服务,如果param2留空,它不会抛出异常.这可能吗?
[WebMethod]
public string HelloWorld(string param1, bool param2) { }
Run Code Online (Sandbox Code Playgroud)
异常是在尝试将空字符串转换为布尔值时抛出的System.ArgumentException.
到目前为止没有奏效的想法:
Web服务不允许使用方法重载,例如
public string HelloWorld(string param1)
{
return HelloWorld(param1, false);
}
Run Code Online (Sandbox Code Playgroud)如建议在这里:
bool可空的bool?.同样的例外.我的问题与这个问题有关,但唯一的答案是WCF合同,我还没有使用过.
我有一个XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://a.com/a.xsd"
targetNamespace="http://a.com/a.xsd"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:element name="Item" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
我已经转换成使用XSD.EXE v2.0.50727.3615 C#类,其生成代码如下
namespace A {
using System.Xml.Serialization;
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://a.com/a.xsd")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://a.com/a.xsd", IsNullable=false)]
public partial class A {
private string itemField;
/// <remarks/>
public string Item {
get {
return this.itemField;
}
set {
this.itemField = value;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在我的webservice中返回一个AA对象,它在服务描述中生成这个片段 …
我有一个ASMX Web服务设置为使用HTTP GET方法.采用基本String和Int参数的简单方法正常工作,我可以MyService.asmx/MethodName?Param=Value用XML 调用并获得响应.
但是,当我有一个具有可空Int(即int?)的方法时,我收到此错误:
<方法名称> Web服务方法名称无效.
错误消息令人困惑,因为该方法确实存在,而不是在GET范围内.我认为这是因为可空类型太复杂而无法通过URL传递,但我找不到任何文档或SO帖子.
我很欣赏Lists或自定义类等复杂类型无法使用GET,但我认为可以原生处理一个简单的可空int或可空日期,只需检测它是否从URL中省略.猜猜不是那么简单!
任何建议或解决方法将不胜感激.
蒂姆,谢谢
我得到了一个 WSDL 文件和几个 XSD 文件来为其构建 Web 服务。现在我正在尝试设置它以接收请求和响应。
我对 WebServices 的经验仅限于带有 asmx 文件等的旧 asp 版本。
XSD 文件中有很多信息,我不想手动构建这些类,我也不太清楚这到底意味着什么(我想只是一个 xml 可序列化类,但还没有看过进去)。
我从哪里开始呢?我研究了 WCF,但它对我来说完全陌生,所以我宁愿使用旧样式,但我正在努力寻找有关如何设置它或从 XSD 文件自动生成类的任何信息.
我确实尝试过 WCF,但是Cannot import wsdl:portType当我尝试生成 WebService 代码时,WSCF blue 给了我错误 ( )。并且由于某种原因svcutil.exe会生成一些XSD 文件信息,但不是全部。
所以两个问题:
如何从 XSD 文件生成一些存根类以实现这一目标
从不使用 wscf blue的 WSDL 和多个 XSD 文件生成 WCF 服务的教程/演练?