我想在Windows Azure中运行一个本机httpmodule(c ++ 64位dll)。 首先,这是可能的吗,其次,最好的方法是什么?
我以前在 azure 中使用过本机 dll,但将其包装在托管的 c# httphandler 中,该处理程序运行良好,但这次我想直接托管本机 dll。 是否可以像在 IIS 中一样在 Azure 中托管本机 dll?
Role,并且在Windows Azure Web Role上,具有IIS的本机HttpModule配置将与其他IIS服务器相同,这里唯一的技巧是您将使用启动任务来运行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
有可能,我最近不得不在我的 Azure 项目中使用非托管 C 库,所以我所做的是为它创建一个 C++/CLI 包装器,并简单地在我的 C# 项目中引用它。
我相信这是最简单的方法,否则您需要使用 P/Invoke 直接从 C# 调用非托管本机代码。
运行时库,因此您必须使用 VS2008 编译C++项目,或者更好的替代方法是将 Visual C++ 2010 可再发行组件包上传到云并在启动时以静默方式安装它。
如果您有兴趣,我在这里列出了 3 个简单的步骤。