当前位置: 首页 > 知识库问答 >
问题:

Dllimport在visual studio上工作,但不在iis服务器上工作

籍弘伟
2023-03-14

你好,我有一个我开发的dll。我在使用dll导入的网站中使用此dll。当我通过visual studio运行网站时,一切都正常。但当我用iis运行它时,它没有错误。请参阅所附代码。谢谢在这里输入图像描述

共有1个答案

姜宏放
2023-03-14

网站的文件/文件夹相对于该特定网站的主目录。由于DllImport的工作方式,可以将所需目录添加到PATH环境变量中,然后只指定文件名。

尝试以下方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Web.Hosting;
using System.Runtime.InteropServices;
using System.Web.Script.Serialization;
using System.Text.RegularExpressions;

namespace WebAppRunDLLTest
{
    public partial class _default : System.Web.UI.Page
    {
        [DllImport("dapreporter.dll", CallingConvention = CallingConvention.StdCall)]
        public static extern IntPtr fndapreporter(string inifile, int nReport, int nYear, int nMonth, int nDay, int nType, int nCode, int precision);

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //get path to bin directory
                //string binDir = Server.MapPath("~/bin/");
                string binDir = HostingEnvironment.MapPath("~/bin/");

                //add bin directory to PATH so DLLImport can find the DLL
                Environment.SetEnvironmentVariable("PATH", String.Format("{0};{1}", Environment.GetEnvironmentVariable("PATH"), binDir));

                string iniFile = File.ReadAllText(Path.Combine(binDir, "WinDAP.ini"));

                IntPtr pVariant = fndapreporter(iniFile, 0, 2021, 9, 12, 0, 197, 0);

                object sHtml = Marshal.GetObjectForNativeVariant(pVariant);

                Marshal.FreeCoTaskMem(pVariant);
                pVariant = IntPtr.Zero;
                Response.Write(sHtml.ToString());
            }
            catch (Exception ex)
            {
                Response.Write("ERROR: " + ex.Message);
            }
        }
    }
}

资源:

  • 使用非静态路径从DLL调用函数
 类似资料:
  • 我有一个应用程序,它使用一个在开发环境中工作的数据列表,但在生产环境中返回一个没有查找的空白字段。我想广泛使用datalist,因为它很容易提供一个自动完整的工具,但除非它在生产中工作。 Dev是在Win7下的IE11.0上的MVC VS 2010,在HTML5Test中得分302。产品是服务器2012 R2标准上的IE11.0,报告为Win8.1,在HTML5Test中得分为312分。 经过大量

  • 我正在自学servlet,找到了一些非常好的教程,并在Eclipse Neon EE中取得了巨大成功。(非常基本的servlet,只提供一个简单的静态网页) 在安装Eclipse Neon EE之前,我安装了Tomcat standalone,并对其进行了测试,得到了regulat apache Tomcat页面。我找到的教程还指导我如何在Eclipse中设置tomcat服务器。他们还向我展示了如

  • 以下代码在我的localhost上运行完美,但在我的实时服务器上显示了以下错误 警告:move_uploaded_file(.../uploads/76948893.jpeg):无法打开流:没有此类文件或目录 警告:move_uploaded_file():无法将'/tmp/phppxvRs8'移动到'…/上传/76948893.jpeg' 它所做的很简单,它获取来自 html 表单的数组 [“p

  • 我试图在Linux Red Hat Entreprise Linux release 5.11(Tikanga)服务器上安装GlassFish4.0。 因此,我按照以下网站说明成功地在该服务器上安装了Java JDK1.7.0_79和NetBeans4.0:https://blog.idrsolutions.com/2014/02/tutorial-setting-up-glassfish-on-

  • 这是我的第一个问题,也是第一篇英文帖子,请耐心等待。 我正在研究ASP。NET MVC Web Api RESTful应用程序。对于用户身份验证,我想使用加密令牌。我在localhost上工作的想法是:用户请求令牌地址/令牌,在头中包括auth:昵称:passwd,服务器返回加密的令牌,用户将在下一个请求中使用它。所以,用户发送带有头身份验证令牌的请求:encryptedToken,服务器将解密该

  • 这是怎么工作https://graph.microsoft.com/v1.0/me/onenote/notebooks?filter=tolower(名)eq'我的笔记本' 来自图形资源管理器的屏幕截图 当我尝试在C#中编写相同的代码时,我得到了以下错误代码:BadRequest消息:无效筛选子句内部错误:AdditionalData:日期:2020-09-02T20:01:24 我正在使用下面的