我是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服务。
谢谢
答案 0 :(得分:0)
嗯,嗨,我们可以知道这个client.getTxDetailsStatusItem(trackingID);
的代码是什么吗?您的显示的asmx似乎只包含public DataSet getTxDetails(int orderID)