ASMX webservice给出错误 - 根级别的数据无效

时间:2015-08-13 04:13:23

标签: c# asp.net asmx

我是Web服务的新手,并不是真正了解ws的流程。 这是我的searchOrderWebService.cs。

   [WebMethod]
    public int searchOrderID(string orderID)
    {   
    CheckProductTrack checkProductTrack = new CheckProductTrack();
    int Tid = checkProductTrack.getTrackRecord(orderID, 3);

    return Tid;
}



[WebMethod]
public List<ProgressDetails> getOrderIDProgress(int orderID)
{
    return ProgressTrackClass.ProgressTrack.getProgress(orderID).ToList();
}



[WebMethod]
public DataSet getTxDetails(int orderID)
{

    SqlDataAdapter da = new SqlDataAdapter();
    DataSet ds = new DataSet();
    da.SelectCommand = new SqlCommand("SELECT  tradeit.TSTxDetails.TxID, tradeit.TSTxDetails.ProductID, tradeit.TSTxDetails.ProductName, tradeit.TSTxDetails.Qty, tradeit.TSTxMaster.TxStatus "
                                     + " FROM tradeit.TSTxDetails INNER JOIN tradeit.TSTxMaster ON tradeit.TSTxMaster.TxID=tradeit.TSTxDetails.TxID WHERE tradeit.TSTxDetails.TxID='" + orderID + "' ", con);

    con.Open();
    da.Fill(ds);

    return ds;
}

流程是:

当用户输入OrderId时,单击该按钮,它会将用户定向到webservice,并在trackItem表中搜索orderID。

如果orderITem表中存在orderID,那么它将显示进度。

如果orderID不存在于trackITT表中,它将转到TxDetails表,如果存在,它将显示进度。

直到现在,只有orderID在表TrackItem中

,我的web服务才有效

如果它在其他表中,则会出现此错误

  Exception Details: System.Xml.XmlException: The data at the root level is 

  invalid. Line 1, position 1.




 Line 638:      [System.ComponentModel.EditorBrowsableAttribute
(System.ComponentModel.EditorBrow   sableState.Advanced)]
 Line 639:searchOrderServiceReference.searchOrderIDResponsesearchOrderServiceReference.
 searchOrderWebServiceSoap.
 searchOrderID
 (searchOrderServiceReference.searchOrderIDRequest request) {
 Line 640:            return base.Channel.searchOrderID(request);
  Line 641:        }

这是我的FormCLient,我从。

访问web服务
 public partial class FormClient : System.Web.UI.Page
 {
  SqlConnection con
  = new SqlConnection
  (ConfigurationManager.ConnectionStrings["TMXEntities"]
  .ConnectionString);

protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
    //RETRIVEING TXID ENTERED BY USER
    string TxID = TextBox1.Text;
    Label1.Text = "Tracking Details For Order No :" + TxID + " ";



    //webservice
    searchOrderServiceReference.searchOrderWebServiceSoapClient client = new searchOrderServiceReference.searchOrderWebServiceSoapClient();
    int trackingID = client.searchOrderID(TxID);



    //IF TX ID IS IN ANY ONE OF THE TABLE, THEN PROCEDD TO GET THE PROGRESS TRACK
    if (trackingID != 0)
    {
        GridView3.DataSource = null;
        GridView3.DataBind();

        Label2.Text = "";

        GridView1.DataSource = client.getOrderIDProgress(trackingID);
        GridView1.DataBind();
    }
    else
    {
        GridView1.DataSource = null;
        GridView1.DataBind();

        GridView3.DataSource = client.getTxDetailsStatusItem(trackingID);
        GridView3.DataBind();
     }
    }
   }

我对序列化,xml,POST GET字真的很模糊。如何在asp.net中使用正确的web服务。

谢谢

1 个答案:

答案 0 :(得分:0)

嗯,嗨,我们可以知道这个client.getTxDetailsStatusItem(trackingID);的代码是什么吗?您的显示的asmx似乎只包含public DataSet getTxDetails(int orderID)