我想在Windows Azure中運行本機httpmodule(C++ 64位dll)。首先,這是可能的,其次,什麼是最好的方式去做呢?HttpModule Azure中的Native C++ dll
我以前曾經在azure中使用過原生dll,但是將其包裝在一個託管的c#httphandler中,它工作正常,但是這次我想直接託管本機dll。是否有可能就像我在IIS中一樣將宿主的本地dll與宿主相同?
我想在Windows Azure中運行本機httpmodule(C++ 64位dll)。首先,這是可能的,其次,什麼是最好的方式去做呢?HttpModule Azure中的Native C++ dll
我以前曾經在azure中使用過原生dll,但是將其包裝在一個託管的c#httphandler中,它工作正常,但是這次我想直接託管本機dll。是否有可能就像我在IIS中一樣將宿主的本地dll與宿主相同?
我相信你使用的是Windows Azure的Web角色和Windows Azure的Web角色,與IIS本地的HttpModule配置將是相同的和其他IIS服務器這裏唯一的問題是,你將使用啓動任務運行APPCMD命令來安裝,註冊和配置您的本地模塊。
的基本命令,你需要在你的啓動任務將類似於如下:
appcmd install module /name: string /image: string /add:true|false /lock:true|false
例如,註冊,啓用和鎖定模塊名爲ImageCopyrightModule與在%.dll文件WINDIR%\ SYSTEM32 \ inetsrv目錄,請在命令提示符下鍵入以下,然後按ENTER鍵:
appcmd install module /name: ImageCopyrightModule /image:c:/%windir%/system32/inetsrv/ imageCopyrightModule .dll /add:true /lock:true
是的,這是可能的,我最近不得不使用非託管的C庫在我的Azure項目所以我所做的就是爲它創建一個C++/CLI包裝器,並簡單地引用它C#項目。
我相信這是最簡單的方法,否則你將需要使用P/Invoke直接從C#調用非託管本機代碼。請記住,在雲端,Azure使用2008 Visual C++運行時庫,因此您必須使用VS2008編譯您的C++項目,或者更好的替代方法是將Visual C++ 2010 Redistributable Package上傳到雲並以靜默方式安裝它在啓動時。
我列出了3個簡單的步驟來做到這一點here如果你有興趣。