Windows窗体应用程序中的图片框的绘制事件未被iis托管的web api调用

时间:2016-03-14 12:50:17

标签: c# asp.net iis

我创建了一个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事件代码。

1 个答案:

答案 0 :(得分:0)

我找到了使其按要求工作的解决方法。 我没有在picCanvas_Paint事件中编写代码,而是使用必需的参数创建了一个简单的函数,并调用了相同的函数来代替调用paint事件。

现在它有效。