【问题标题】:How to call unmanaged code in ASP.NET website and host it in IIS?如何在 ASP.NET 网站中调用非托管代码并将其托管在 IIS 中?
【发布时间】:2011-07-12 06:49:32
【问题描述】:

我创建了一个 C++ dll。它工作正常并且可以完成工作。

我在 asp.net 中创建了调用 C++ dll 中的方法的方法。 DLL 路径是绝对的。它也很好用。

然后我将网站发布到一个文件夹中,并将网站托管在 IIS 上。我收到一条错误消息

Exception Details: System.DllNotFoundException: Unable to load DLL 'FilesCreator.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

请建议我需要做什么才能使其正常工作。

【问题讨论】:

  • 这是同一作者的重复问题。 stackoverflow.com/questions/5247907/…
  • 我真的需要一个解决方案,可能是我之前的问题不清楚,因为我没有得到任何答案
  • FilesCreator.dll是否复制到网站的/bin文件夹中?
  • 是的。我使用了绝对路径和相对路径,但没有运气。
  • 您能否向我们展示您的 DLLImport 语句之一?此外,您之前的问题中有一些 cmets,要求提供更多信息。您没有向我们提供足够的信息来帮助您调试问题。如果您希望我们提供帮助,您必须提供更多详细信息。

标签: c# asp.net c++ iis


【解决方案1】:

您是否确认运行您的应用程序的应用程序池的经过身份验证的用户具有读取和执行 DLL 的适当权限?

尝试为运行 IIS7 应用程序池的用户添加权限。对于 IIS6,如果您使用匿名身份验证,则尝试按照您的网站设置中的配置向 IIS 匿名用户授予权限。 见here for IIS6here for IIS7

【讨论】:

  • 我在文件夹的安全选项卡中添加了所有人组,并具有完全控制权。那应该行得通吗?
  • 不一定。在上面编辑了我的答案。
  • 正在使用网络服务,没有假装。我在包含 DLL 的文件夹的安全选项卡中添加了网络服务和登录用户,并且我授予了两个用户对该文件夹的完全访问权限。但我没有成功......我错过了什么?
  • 这是 IIS7 吗?如果是这样,它作为 64 位进程运行,所以如果您尝试在 32 位 EXE 中调用函数,可能会出现问题?您能否确认它们都针对相同的架构?
猜你喜欢
  • 1970-01-01
  • 2010-09-18
  • 2011-04-15
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 2010-10-03
相关资源
最近更新 更多