2017-10-07 7 views
0

Nous avons une application tierce qui fournit un SDK sous la forme d'une DLL pouvant être utilisée pour développer des applications personnalisées qui se connectent à leur service. La DLL réside dans le répertoire de l'application tierce avec un tas d'autres DLL dont elle dépend. Le guide SDK fournit des instructions pour créer une application de test via Visual Studio et il est indiqué d'ajouter une référence à la DLL SDK avec Copy Local défini sur False. J'ai créé une application Windows Forms .NET test et ajouté une référence à la DLL selon les instructions et tout a bien fonctionné. Cependant, référencer la DLL dans une application ASP.NET entraîne une exception FileNotFoundException pour l'une des DLL tierces dépendantes.Impossible d'utiliser une DLL tierce dans une application ASP.NET, mais fonctionne à partir d'une application Windows Forms .NET

En tant qu'expérience, j'ai essayé d'ajouter une référence à la DLL incriminée à mon projet avec Copy Local définie sur False, mais a obtenu la même erreur. Avec Copy Local mis à True il va plus loin, mais échoue ensuite sur une autre DLL. L'ajout d'une référence à cette DLL échoue quel que soit le paramètre Copy Local. Je suppose que les problèmes ont à voir avec les différences entre la façon dont les applications .NET "standard" chargent les assemblages et les applications ASP.NET, mais je ne suis pas sûr de la façon dont je devrais résoudre ce problème.

Existe-t-il un moyen correct de référencer une DLL tierce (et ses dépendances) dans une application ASP.NET sans les placer dans le GAC ou dans le répertoire bin de l'application?

+0

Il y a beaucoup de façons dont cela pourrait mal se passer, il n'est donc pas possible de vous donner une réponse en fonction de ce qui est dans votre question. La DLL tierce peut avoir des dépendances en C ou C++, ou peut même ne pas être conçue pour fonctionner sur ASP.NET. La façon moderne de référencer une DLL est d'utiliser NuGet (si un paquet est disponible), qui prend généralement soin des détails sales concernant le référencement de ses propres dépendances. – NightOwl888

Répondre

2

Les applications Web ASP.NET sur IIS s'exécutent en session 0 avec des ressources limitées, par rapport aux applications WinForms exécutées dans votre session utilisateur avec beaucoup plus d'autorisations et de ressources.

Ce sont des environnements complètement différents par nature, donc à moins que le fournisseur d'une telle bibliothèque ne prétende prendre en charge ASP.NET/IIS, vous devez simplement supposer qu'il n'est pas compatible et qu'il doit être évité.

Vous devriez remarquer que même les propres technologies de Microsoft (Office Automation, System.Drawing et ainsi de suite) ne prennent en charge que WinForms, mais pas ASP.NET.