我创建了一个Asp.Net Windows窗体应用程序。此应用程序的exe由另一个Asp.Net Web API调用。
每当我在本地运行WebApi时,都会调用exe并执行exe中定义的paint事件,并将结果(此处为图像)保存在特定位置。
WebApi代码调用exe:
System.Diagnostics.ProcessStartInfo startInfo;
Process p = new Process();
startInfo = new System.Diagnostics.ProcessStartInfo(@"F:\PolygonsMarking\howto_draw_polygons\bin\Debug\howto_draw_polygons.exe");
startInfo.Arguments = PolygonVertices.ToString() + " " + backgroundImage + " " + tile;//pass arguments to exe
p.StartInfo = startInfo;
p.Start();//execute exe
return Request.CreateResponse(HttpStatusCode.OK);
接受传递的参数的Exe代码并调用paint事件:
public Form1(string[] arguments)
{
InitializeComponent();
if (arguments != null)
{
BackImagePath = arguments[1];
TileImagePath = arguments[2];
string vertices = Convert.ToString(arguments[0]);
polypoint = vertices.Split(',').ToArray();
picCanvas.Paint += new PaintEventHandler(picCanvas_Paint);//call paint event
}
}
private void picCanvas_Paint(object sender, PaintEventArgs e)
{
Image img1 = Image.FromFile(@""+BackImagePath+"");//F:\PolygonsMarking\howto_draw_polygons\image2_1762.png");
picCanvas.Image = img1;
Bitmap bmp = new Bitmap(picCanvas.Image);
LogWriter.LogFileWriter("\nin paint canvas");
Graphics g = Graphics.FromImage(bmp);
//some code ahead
}
当API在本地运行时,代码工作正常,但是当我在IIS 8.0版上托管Web API并运行托管站点时,会调用exe但不执行paint事件代码。
答案 0 :(得分:0)
我找到了使其按要求工作的解决方法。 我没有在picCanvas_Paint事件中编写代码,而是使用必需的参数创建了一个简单的函数,并调用了相同的函数来代替调用paint事件。
现在它有效。