0

我想在 Windows azure 中运行本机 httpmodule(c++ 64 位 dll)。首先这是可能的,其次,最好的方法是什么?

我以前在 azure 中使用过本机 dll,但将其包装在托管的 c# httphandler 中,它运行良好,但这次我想直接托管本机 dll。是否可以像在 IIS 中一样在 azure 中托管本机 dll?

4

2 回答 2

0

是的,有可能,我最近不得不在我的 Azure 项目中使用一个非托管 C 库,所以我所做的就是为它创建一个 C++/CLI 包装器,并在我的 C# 项目中简单地引用它。
我相信这是最简单的方法,否则您需要使用 P/Invoke 直接从 C# 调用非托管本机代码。

请记住,在云端,Azure 使用 2008 Visual C++ 运行时库,因此您必须使用 VS2008 编译您的 C++ 项目,或者更好的选择是将Visual C++ 2010 Redistributable Package上传到云端并静默安装在启动时。

如果您有兴趣,我会在此处列出执行此操作的 3 个简单步骤。

于 2012-06-29T07:59:18.807 回答
0

我相信您使用的是 Windows Azure Web 角色,并且在 Windows Azure Web 角色上,带有 IIS 的本机 HttpModule 配置将与其他 IIS 服务器相同,这里唯一的技巧是您将使用 Startup 任务运行 AppCmd 命令进行安装,注册并配置您的本机模块。

您在启动任务中需要的基本命令将类似于以下内容:

appcmd install module /name: string /image: string /add:true|false /lock:true|false

例如,要使用 %windir%\system32\inetsrv 目录中的 .dll 文件注册、启用和锁定名为 ImageCopyrightModule 的模块,请在命令提示符处键入以下内容,然后按 Enter:

appcmd install module /name: ImageCopyrightModule /image:c:/%windir%/system32/inetsrv/ imageCopyrightModule .dll /add:true /lock:true
于 2012-06-27T01:10:08.677 回答