Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在ASP.NET应用程序中使用第三方DLL,但可在Windows Forms.NET应用程序中使用_C#_Asp.net_.net_Dll_.net Assembly - Fatal编程技术网

C# 无法在ASP.NET应用程序中使用第三方DLL,但可在Windows Forms.NET应用程序中使用

C# 无法在ASP.NET应用程序中使用第三方DLL,但可在Windows Forms.NET应用程序中使用,c#,asp.net,.net,dll,.net-assembly,C#,Asp.net,.net,Dll,.net Assembly,我们有一个第三方应用程序,它以DLL的形式提供SDK,可用于开发连接到其服务的自定义应用程序。DLL与它所依赖的一组其他DLL一起存在于第三方应用程序的目录中。《SDK指南》提供了通过Visual Studio创建测试应用程序的说明,其中说明了在将Copy Local设置为False的情况下添加对SDK DLL的引用。我创建了一个测试Windows窗体.NET应用程序,并按照说明添加了对DLL的引用,一切正常。但是,在ASP.NET应用程序中引用DLL会导致一个依赖的第三方DLL出现FileNo

我们有一个第三方应用程序,它以DLL的形式提供SDK,可用于开发连接到其服务的自定义应用程序。DLL与它所依赖的一组其他DLL一起存在于第三方应用程序的目录中。《SDK指南》提供了通过Visual Studio创建测试应用程序的说明,其中说明了在将
Copy Local
设置为
False
的情况下添加对SDK DLL的引用。我创建了一个测试Windows窗体.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目录中?

IIS上的ASP.NET web应用程序在会话0中运行,资源有限,而在用户会话中运行的WinForms应用程序具有更多的权限和资源

它们本质上是完全不同的环境,因此除非此类库的供应商声称支持ASP.NET/IIS,否则您应该简单地假设它不兼容,并且应该避免


您应该注意到,即使是Microsoft自己的技术(Office automation、
System.Drawing
等)也只支持WinForms,而不支持ASP.NET。

IIS上的ASP.NET web应用程序在会话0中运行,资源有限,而在用户会话中运行的WinForms应用程序权限和资源要多得多

它们本质上是完全不同的环境,因此除非此类库的供应商声称支持ASP.NET/IIS,否则您应该简单地假设它不兼容,并且应该避免


您应该注意到,即使是Microsoft自己的技术(Office automation、
System.Drawing
等)也只支持WinForms,而不支持ASP.NET。

有很多方法可能会出错,因此无法根据您的问题给出答案。第三方DLL可能有C或C++的依赖关系,或者甚至不被设计为在ASP.NET上工作。引用DLL的现代方法是使用NuGet(如果有包的话),它通常会处理引用它自己的依赖项的肮脏细节。有很多方法可能会出错,因此不可能根据您的问题给出答案。第三方DLL可能有C或C++的依赖关系,或者甚至不被设计为在ASP.NET上工作。引用DLL的现代方法是使用NuGet(如果有包可用),它通常会处理有关引用其自身依赖项的脏细节。