2012-01-30 93 views
-1

我們有一個從Excel讀取數據的C++ Win32 DLL。C++非託管DLL無法在IIS 7.5上啓動Excel

該應用程序使用下列行來創建一個應用程序:

xl.CreateInstance(L"Excel.Application"); 

我想用一個.NET項目這個DLL,所以我已經建立了一個C++/CLI包裝,並引用包裝DLL在C#Web應用程序上。

的Win32(非託管) - > C++/CLI(管理) - > C#

Web應用程序工作正常,Visual Studio集成的Web服務器上,但是當我部署到IIS失敗上述行並返回錯誤「無效指針」。

我認爲這可能是一個權限問題,所以我模擬了Web應用程序,但它沒有工作。看起來像IIS不允許從非託管C++ DLL打開Excel。我可以從C#打開,但有很多C++代碼來讀取電子表格,我不想再次寫入它。

我正在運行IIS 7.5並且應用程序池允許Win32應用程序。

你能幫我嗎?

最好的問候,

回答

1

在服務器上使用Office互操作不被微軟支持 - 看http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2

由於Windows Vista的MS介紹了幾種與安全相關的措施,防止Windows服務(IIS只是一個特殊的就是這樣)從做類似桌面的事情......這意味着你將不得不繞過一些安全措施(單獨模仿不會削減它!)來讓它工作(不推薦!)。

集成VS Web服務器不模擬IIS的有關權限等行爲

爲了處理與Excel服務器中的場景有幾個選項(免費的和商業)那裏:

我可以推薦Aspose.CellsFlexcel ......沒有嘗試SpreadsheetGear但聽到+閱讀了大量關於它的好東西......

自由選擇(儘管較新的xlsx格式僅!)例如爲OpenXML 2 from MSEPPlus

+0

聽到,聽到+1。我真的希望人們會停止嘗試這樣做。 – Kev 2012-01-30 16:06:26