我需要使用带有.NET 1.1的WebService。问题是webService返回Null值,而.NET 1.1不适用于Nullable类型。
WebService Schema的一部分
<xs:element name="SomeDate" type="xs:dateTime" nillable="true" />
<xs:element name="Email" type="xs:string" nillable="true" />
你怎么能消费它?我会用什么方法来解决这个难题?
我甚至无法调用webService。 .Net 1.1尝试解析空值,然后崩溃。
当我们尝试调用WebService时,它给出了以下例外:
输入字符串的格式不正确。
异常详细信息:System.FormatException:输入字符串的格式不正确。
第75行:[System.Web.Services.Protocols.SoapDocumentMethodAttribute(“http://mysite.com/Clientes/ConsultaCliente”,RequestNamespace =“http://mysite.com/Clientes/”,ResponseNamespace =“http ://mysite.com/Clientes/“,Use = System.Web.Services.Description.SoapBindingUse.Literal,ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
第76行:public Clientes ConsultaCliente(ParametrosConsultaClientes parametros){
第77行:object [] results = this.Invoke(“ConsultaCliente”,new object [] {
第78行:参数}};
[FormatException:输入字符串的格式不正确。]
System.Number.ParseInt32(String s,NumberStyles style,NumberFormatInfo info)+0
System.Int32.Parse(String s,NumberStyles style,IFormatProvider provider)+37
System.Xml.XmlConvert.ToInt32(String s)
答案 0 :(得分:3)
您可以将DateTime
类(必须可以为空的任何其他值类型)包装到NullableDateTime
类中(作为引用类型)。它不像通用类型那么好,但即使在.NET 1.1中也应该可以工作。
我没有测试它,但我刚发现Nullable Type Library on Source Forge。
答案 1 :(得分:2)
您可以在.net 2中编写一个中间服务来填充服务。换句话说,您使用相同的界面编写服务,只需将可空字段更改为其他内容,然后在服务中调用实际服务,按结果,然后将它们返回给您的1.1客户端。
答案 2 :(得分:2)
也许您可以为代理类VS
添加一些额外的控件,或者wsdl.exe
自动生成(C:\Projetos\PortalIO\Fontes\DotNet\Source\PortalIO\Web References\wsCentralClientes\Reference.cs)
答案 3 :(得分:1)
在.NET 1.x中做事时,只有一种方法 - 艰难的方式(所以起诉我雷克萨斯) 查看http://msdn.microsoft.com/en-us/magazine/cc188761.aspx 并将其与XSLT(在1.x IIRC中提供)结合使用,以重写定义以适合解串器。