我们有第三方应用程序,它以DLL的形式提供SDK,可用于开发连接到其服务的自定义应用程序。 DLL存在于第三方应用程序的目录中,以及它依赖的一堆其他DLL。 SDK指南提供了有关通过Visual Studio创建测试应用程序的说明,并且说明在Copy Local
设置为False
时添加对SDK DLL的引用。我创建了一个测试Windows Forms .NET应用程序,并根据说明添加了对DLL的引用,一切正常。但是,在ASP.NET应用程序中引用DLL会导致其中一个从属第三方DLL出现FileNotFoundException
异常。
作为一项实验,我尝试在Copy Local
设置为False
的情况下向我的项目添加对有问题的DLL的引用,但是得到了相同的错误。将Copy Local
设置为True
它会更进一步,但在另一个DLL上失败。无论Copy Local
设置如何,添加对该DLL的引用都会失败。
我认为这些问题与"标准"之间的差异有关。 .NET应用程序加载程序集与ASP.NET应用程序,但我不太清楚我应该如何解决这个问题。
是否有正确的方法在ASP.NET应用程序中引用第三方DLL(及其依赖项)而不将它们放在GAC或应用程序的bin目录中?
答案 0 :(得分:2)
IIS上的ASP.NET Web应用程序在会话0中使用有限的资源运行,与在用户会话中运行的具有更多权限和资源的WinForms应用程序相比。
它们本质上是完全不同的环境,所以除非这样的库的供应商声称支持ASP.NET / IIS,否则你应该简单地认为它不兼容,应该避免。
您应该注意到,即使是微软自己的技术(Office自动化,System.Drawing
等)也只支持WinForms,但不支持ASP.NET。