#2
qq28895779662021-04-15 11:22
换种调用方式试一下,动态调用
public static void Get_Service(string url) { WebClient web = new WebClient(); Stream stream = web.OpenRead(url + "Report.asmx?WSDL"); ServiceDescription description = ServiceDescription.Read(stream); ServiceDescriptionImporter importer = new ServiceDescriptionImporter(); importer.ProtocolName = "Soap"; importer.Style = ServiceDescriptionImportStyle.Client; importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync; importer.AddServiceDescription(description, null, null); CodeNamespace nmspace = new CodeNamespace(); CodeCompileUnit unit = new CodeCompileUnit(); unit.Namespaces.Add(nmspace); ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit); CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"); CompilerParameters parameter = new CompilerParameters(); parameter.GenerateExecutable = false; parameter.GenerateInMemory = true; CompilerResults result = (parameter, unit); Assembly asm = WebService_Type = asm.GetType("Report"); run_service = true; } |
两台电脑使用同样的sql语句,在同一时间调用这个方法,其中的一个电脑返回的数据丢失很多。如果不同时调用,则不存在这个问题。
很困惑,请指教。
以下是服务端代码:
程序代码:
[WebMethod(Description = "查询符合条件的数据,直接返回一个dataset")]
public DataSet getDataSet(string SQLstr)
{
DataSet My_DataSet1 = new DataSet(); //创建DataSet对象
try
{
SqlDataAdapter SQLda = new SqlDataAdapter(SQLstr,getcon()); //创建一个SqlDataAdapter对象,并获取指定数据表的信息
SQLda.Fill(My_DataSet1, "Mytable"); //通过SqlDataAdapter对象的Fill()方法,将数据表信息添加到DataSet对象中
}
catch
{
}
finally
{ con_close(); }//关闭数据库的连接
return My_DataSet1; //返回DataSet对象的信息
}
public DataSet getDataSet(string SQLstr)
{
DataSet My_DataSet1 = new DataSet(); //创建DataSet对象
try
{
SqlDataAdapter SQLda = new SqlDataAdapter(SQLstr,getcon()); //创建一个SqlDataAdapter对象,并获取指定数据表的信息
SQLda.Fill(My_DataSet1, "Mytable"); //通过SqlDataAdapter对象的Fill()方法,将数据表信息添加到DataSet对象中
}
catch
{
}
finally
{ con_close(); }//关闭数据库的连接
return My_DataSet1; //返回DataSet对象的信息
}