网站调用dll程序的问题

有个不认识的小伙子问我一个问题,就是在自己的电脑上面调用Delphi开发的dll成功,但是部署在IIS服务器上,执行却没有返回信息,这是为什么呢?
我看了很久,也写了代码做测试,以为是dll路径的问题。如果是路径有问题,那肯定是调用不成功,并且会有错误提示的,只是网页一直在执行,却没有什么错误提示?这样看来,其实网站是已经读取到dll的信息了,只是没有办法返回信息而已。读取dll的类如下所示:

    public class ReadDll
    {
        [DllImport("Project1.dll", EntryPoint = "msg", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern StringBuilder msg();
    }

我用网页调用类如下所示:

    protected void Page_Load(object sender, EventArgs e)
    {
        ClassLibrary2.ReadDll.msg();

        Response.Write(xx);
    }

运行网页了之后,就弹出一个对话框。我以为已经成功了,就部署到IIS服务器上,但是部署了之后,就发现网页可以访问,但是一直在执行中。很奇怪,不知道出现了什么问题。我无意中将一句代码注释了,如下:

    protected void Page_Load(object sender, EventArgs e)
    {
        ClassLibrary2.ReadDll.msg();

        //Response.Write(xx);
    }

运行网页的时候,竟然还是弹出对话框。我恍然大悟,原来是dll的问题。调用dll函数的时候,dll就弹出对话框,在自己电脑测试的时候是可以弾出来的,但是部署到IIS服务器的时候,服务器就没有办法弹出对话框了。
我们在写网页调用dll的时候,应该是消息传递,然后具体的显示交由网页处理。不然就出现以上的问题。记下来,不要再犯类似的错误。

你可能感兴趣的:(软件开发)