Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发送请求前根据架构验证对web服务的调用_C#_Asp.net_Web Services_Xsd - Fatal编程技术网

C# 发送请求前根据架构验证对web服务的调用

C# 发送请求前根据架构验证对web服务的调用,c#,asp.net,web-services,xsd,C#,Asp.net,Web Services,Xsd,我正在调用web应用程序中的web服务(用Java编写)。我使用WSDL使用WSDL.exe命令行工具生成代理类 一切正常 然而,我发现当web服务收到来自我的应用程序的请求时,他们根本没有进行任何数据验证。因此,如果我恰巧发送了一分钟的数据,而这些数据并不是他们想要的,那么我会收到一个一般性的错误,而不会详细说明错误(如果有的话)数据是什么 因此,在发出请求之前,我想根据他们提供的模式验证我的请求。这可能吗?如果可能,我该怎么做 提前感谢从wsdl构建的代理已经强制执行所提供的任何模式,当然,

我正在调用web应用程序中的web服务(用Java编写)。我使用WSDL使用WSDL.exe命令行工具生成代理类

一切正常

然而,我发现当web服务收到来自我的应用程序的请求时,他们根本没有进行任何数据验证。因此,如果我恰巧发送了一分钟的数据,而这些数据并不是他们想要的,那么我会收到一个一般性的错误,而不会详细说明错误(如果有的话)数据是什么

因此,在发出请求之前,我想根据他们提供的模式验证我的请求。这可能吗?如果可能,我该怎么做


提前感谢

从wsdl构建的代理已经强制执行所提供的任何模式,当然,除非调用在您应该传递xml的地方采用字符串参数。这将是一个糟糕的设计,但如果这是你必须做的,你可以。只需使用XmlDocument对象或XmlReader来验证XML。

我的请求允许我发送通过生成代理创建的对象,因此我不是手动创建XML。这是我调用的一个示例-ContextType tx1=忠诚的.GetPoints(tx,obj.Profile.AccountNumber,DateTime.Now,true,consumerName,out pointType,out responseCode);我不认为手工重新创建XML有助于确保发送正确的项目?谢谢你迄今为止的帮助。因此,这意味着您发送的内容已经根据服务器提供的模式(即WSDL)进行了验证。因此,问题在于WSDL没有正确地表达需求。在这种情况下,您可以做的最好的事情是在代码中执行一些额外的检查,以强制执行您发现的WSDL中未表达的其他需求。。。。我想这就是为什么我问怎么做的原因。(请不要误读,这是C#的一个新领域,我正在冒险,我真的不知道正在发生的一切,但必须在很短的期限内完成工作)例如,我有一个由WSDL创建的Address对象。它的一个属性是State,它应该是一个只有2个字符的数据项。我可以使用state字段中的错误数据调用web服务。然而,在这种情况下,web服务会返回一个“一般错误”错误。