У нас есть веб-сервис для мобильного приложения, и он работал нормально, пока мы не сменили сервер.Недавно мы переместили наш сервер на платформу VM Azure и SQL MI, после чего мы столкнулись с проблемой в ответе веб-службы.Один ответ веб-службы неверно сопоставляется с ответом другого запроса, например, когда пользователь 1 нажимает на веб-службу с соответствующим значением Id и в то же время пользователь 2 сталкивается со своим идентификатором, тогда пользователь 1 и пользователь 2 получают одинаковый ответ либо user1, либо user2.Эта проблемавстречается только 10 из 200 попаданий ок.Пожалуйста, предложите мне, если что-то не так или где ошибка сделала.ниже приведен код (здесь я включил несколько журналов для поиска ответа)
В соответствии с приведенной ниже функцией «GetJobAssignmentDetails_fhits» номер «Model_No» является значением первичного ключа для получения соответствующих сведений о пользователе.Эта функция используется для получения деталей, подобных вышеупомянутым (custid, address et.,) Для соответствующего пользователя.
Мы также проверяем угол наклона мобильного устройства, но, похоже, в мобильном приложении нет проблем, потому что мы использовали браузер для доступа к веб-сервису с соответствующим параметром с помощью wsdl, а сам ответ неправильный.Раньше мы постоянно обращались к веб-службе через браузер с уникальным значением параметра 2 разных пользователей на рабочем столе, и там мы сами получали один и тот же ответ в каждый момент времени.
Ниже приведен код,
public class JobSeq {
private string sJobCode;
private string sCustCode;
private string sCustName;
private string sContactPerson;
private string sContactNo;
private string sCustAddress;
private int sJSno;
[System.Xml.Serialization.XmlElementAttribute]
public int JSno {
get {
return sJSno;
}
set {
sJSno = value;
}
}
//Job Code
[System.Xml.Serialization.XmlElementAttribute]
public string JobCode {
get {
return sJobCode;
}
set {
sJobCode = value;
}
}
//Customer Code
[System.Xml.Serialization.XmlElementAttribute]
public string CustomerCode {
get {
return sCustCode;
}
set {
sCustCode = value;
}
}
//Customer Name
[System.Xml.Serialization.XmlElementAttribute]
public string CustomerName {
get {
return sCustName;
}
set {
sCustName = value;
}
}
//Customer Address
[System.Xml.Serialization.XmlElementAttribute]
public string Address {
get {
return sCustAddress;
}
set {
sCustAddress = value;
}
}
//Contact Person
[System.Xml.Serialization.XmlElementAttribute]
public string ContactPerson {
get {
return sContactPerson;
}
set {
sContactPerson = value;
}
}
//Contact No
[System.Xml.Serialization.XmlElementAttribute]
public string ContactNo {
get {
return sContactNo;
}
set {
sContactNo = value;
}
} [System.Xml.Serialization.XmlElementAttribute]
public string RowCount {
get;
set;
} [System.Xml.Serialization.XmlElementAttribute]
public string TotRowCount {
get;
set;
} [System.Xml.Serialization.XmlElementAttribute]
public string NewJob {
get;
set;
} [System.Xml.Serialization.XmlElementAttribute]
public string Accecptjob {
get;
set;
}
} [WebMethod(Description = "Testing", CacheDuration = 0, EnableSession = false)]
public JobDetails_Test GetJobAssignmentDetails_fhits(string Model_No, bool isHistory, string utcStTime, string utcEndTime, string currLatLng, int PageNo, int RowCount, bool isNewjob) {
// Trinetra_App.BAL.Configurations objC = new Trinetra_App.BAL.Configurations();
DateTime dtStTime = DateTime.Now;
ModelNumber = Model_No.ToString();
DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["ConString"].ToString());
SqlCommand command = new SqlCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "rvlf_sp_GetDetails1";
command.Connection = conn;
DataTable dtTable = new DataTable();
JobDetails_Test objJobDetails_std1 = new JobDetails_Test();
Hashtable param_std1 = new Hashtable();
try {
param_std1.Add("@cModelCode", Model_No);
command.Parameters.AddWithValue("@cModelCode", Model_No);
if (isHistory == true) {
command.Parameters.AddWithValue("@bIsHistory", "1");
command.Parameters.AddWithValue("@dStDate", utcStTime);
command.Parameters.AddWithValue("@dEndDate", utcEndTime);
param_std1.Add("@bIsHistory", "1");
param_std1.Add("@dStDate", utcStTime);
param_std1.Add("@dEndDate", utcEndTime);
}
else {
command.Parameters.AddWithValue("@cCurrLatLng", currLatLng);
command.Parameters.AddWithValue("@Isnewjob", isNewjob);
param_std1.Add("@cCurrLatLng", currLatLng);
param_std1.Add("@Isnewjob", isNewjob);
}
//ds = objC.ExecuteDataSet(param_std1, "rvlf_sp_GetJobDetails1", true);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
adapter.Fill(ds);
if (ds.Tables.Count != 0) {
if (ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0) {
StringWriter sw = new StringWriter();
ds.WriteXml(sw, XmlWriteMode.IgnoreSchema);
List < JobSeq > objJobAssignment_std1 = new List < JobSeq > ();
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = ds.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = RowCount;
objPds.CurrentPageIndex = PageNo - 1;
foreach(DataRow item in ds.Tables[0].Rows) {
JobSeq objJobSeq = new JobSeq();
objJobSeq.JobCode = item["JobCode"].ToString();
objJobSeq.JSno = Convert.ToInt32(item["Sno"].ToString());
objJobSeq.CustomerCode = item["CustId"].ToString();
objJobSeq.CustomerName = item["CustName"].ToString();
objJobSeq.Address = item["CustomerAddress"].ToString();
objJobSeq.ContactPerson = item["ContactPerson"].ToString();
objJobSeq.ContactNo = item["Phone"].ToString();
if (isHistory) {
objJobSeq.SignatureBytes = new byte[] {};
objJobSeq.AttachmentBytes = new byte[] {};
}
objJobAssignment_std1.Add(objJobSeq);
}
objJobDetails_std1.Assignment = objJobAssignment_std1;
if (ds.Tables[1] != null && ds.Tables[1].Rows.Count > 0) {
objJobDetails_std1.NewJob = Convert.ToInt32(ds.Tables[1].Rows[0]["NewJob"].ToString());
objJobDetails_std1.Accecptjob = Convert.ToInt32(ds.Tables[1].Rows[0]["Accecptjob"].ToString());
}
else {
objJobDetails_std1.NewJob = 0;
objJobDetails_std1.Accecptjob = 0;
}
objJobDetails_std1.Response_Status = "Success";
}
else {
objJobDetails_std1.Response_Status = "Data not available";
}
}
else {
objJobDetails_std1.Response_Status = "Data not available";
}
}
catch(Exception ex) {
objJobDetails_std1.Response_Status = ex.Message.ToString();
StackFrame stackFrame = new StackFrame();
MethodBase methodBase = stackFrame.GetMethod();
ModelNumber = string.Empty;
}
finally {
param_std1.Clear();
param_std1 = null;
ds.Dispose();
ds = null;
}
return objJobDetails_std1;
}