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);
}
}
}
}
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.