.NET 1.1使用具有可空类型的Web服务,该怎么办?

时间:2011-11-07 22:02:10

标签: c# .net web-services nullable .net-1.1

我需要使用带有.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)

4 个答案:

答案 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中提供)结合使用,以重写定义以适合解串器。