本机如果写一个小程序直接传入参数调用服务,则很顺利的完成,整个过程也非常的快。
可是一到实际环境中,本机作为pos机的后台调用服务总是需要调用多次才能成功,有时调用多次都失败。不知道为什么。
设置环境变量我使用的是这种方式
private static Byte[] RequestTuxedo(Byte[] inputParams, String serviceName) {
for (int i=0;i<inputParams.Length;i++) {
if (inputParams[i] == (byte)0) {
inputParams[i] = 32;//将0转换为空格
}
} //打印前置机请求信息 //Console.WriteLine(Encoding.ASCII.GetString(inputParams)); Utils.tuxreadenv("tuxenv.ini", "TUXCOMM");
AppContext appContext = AppContext.tpinit(null);
TypedBuffer sendBuffer = new TypedString(Encoding.Default.GetString(inputParams));
TypedBuffer revBuffer = new TypedString(""); appContext.tpcall(serviceName, sendBuffer, ref revBuffer, 0); appContext.tpterm();
return Encoding.Default.GetBytes(((TypedString)revBuffer).GetString());
}
解决方法如下
Random ran=new Random(100);
TypedTPINIT init=new TypedTPINIT();
init.flags = ran.Next(0, 100);
AppContext appContext = AppContext.tpinit(init);
--转自