es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dllimport funciona en visual studio pero no en el servidor iis.

Tengo una DLL que he desarrollado. Utilizo esta DLL en un sitio web usando DllImport.

Cuando ejecuto el sitio web a través de Visual Studio, todo está bien, pero cuando lo ejecuto con el IIS, se queda bloqueado sin mostrar errores.

Aquí está mi código:

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.Runtime.InteropServices;
using System.Web.Script.Serialization;
using System.Text.RegularExpressions;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        [DllImport("D:\\WebApplication1\\WebApplication1\\bin\\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
            {
                string iniFile = File.ReadAllText(@"D:\WebApplication1\WebApplication1\bin\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);
            }
        }
    }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema aquí podría estar relacionado con los permisos o las rutas de archivo. Cuando se ejecuta el sitio web a través de Visual Studio, utiliza el servidor de desarrollo, que tiene diferentes permisos y rutas de archivo en comparación con IIS.

    En primer lugar, asegúrese de que el archivo DLL esté ubicado en una ubicación accesible por IIS y de que la aplicación del grupo de aplicaciones de IIS tenga los permisos necesarios para acceder a esa ubicación. Puede verificar la identidad del grupo de aplicaciones para ver qué usuario lo está ejecutando y asegurarse de que ese usuario tenga los permisos necesarios.

    Además, puede intentar usar una ruta de archivo relativa en lugar de una absoluta y asegurarse de que la ruta sea correcta en función del directorio raíz de la aplicación.

    Si estos pasos no resuelven el problema, puede intentar agregar registros y declaraciones de depuración para reducir la causa raíz del problema. Por ejemplo, agregar declaraciones de registro para ver si se está realizando la llamada a la función y si se están lanzando excepciones.

Comments are closed.