如何在asmx方法

时间:2015-11-16 20:39:30

标签: c# asp.net-mvc web-services

如何在asmx类中接收类作为参数?并且我可以验证该类包含数据吗?

我的课程:

  public class ws_loginViewModel
    {
        public int user { get; set; }

        public string pass { get; set; }
    }

我在asmx类中的方法

public int Login(ws_loginViewModel user)

在没有send参数的情况下使用此方法时,我有下一个错误

  

                    肥皂:客户端            System.Web.Services.Protocols.SoapException:El servidor no puede leer la solicitud。 --->   System.InvalidOperationException:错误文档XML(7,41)。   ---> System.FormatException:La cadena de entrada no tiene el formato correcto。 en System.Number.StringToNumber(String str,NumberStyles   options,NumberBuffer& number,NumberFormatInfo info,Boolean   parseDecimal)zh_cn System.Number.ParseInt32(String s,NumberStyles   style,NumberFormatInfo info)...

我使用SoapUi软件并生成此xml

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vac="">
   <soapenv:Header/>
   <soapenv:Body>
      <vac:Login>
         <!--Optional:-->
         <vac:user>
            <vac:user>?</vac:user>
            <!--Optional:-->
            <vac:pass>?</vac:pass>
         </vac:user>
      </vac:Login>
   </soapenv:Body>
</soapenv:Envelope>

1 个答案:

答案 0 :(得分:2)

基于您在评论中提供的XML:

<soapenv:Envelope xmlns:soapenv="schemas.xmlsoap.org/soap/envelope/"; xmlns:vac="vacaciones">
<soapenv:Header/>
  <soapenv:Body>
    <vac:Logeo>
      <!--Optional:-->
      <vac:usuario>
        <vac:usuario>?</vac:usuario>
        <!--Optional:-->
        <vac:clave>?</vac:clave>
      </vac:usuario>
    </vac:Logeo>
  </soapenv:Body>
</soapenv:Envelope>

特别注意这一部分:

<vac:usuario>?</vac:usuario>

你班上的这一部分:

public int user { get; set; }

A&#34;?&#34;字符无法转换为整数。理想情况下,有一些模式验证,消费客户端应该使用它来确保请求有效。但是,无论如何,请求无效。您需要为整数属性提供整数值。