2013-08-01 75 views
0

這裏的情況:VS 08快遞到經典ASP

我們有經典的ASP爲我們的網站運行。 我們有VB6 DLL,在ASP內部作爲COM對象運行。

我已經轉移到Visual Studio 2008.我試圖創建DLL,我可以在ASP中使用與VB6(Server.CreateObject(「」))相同的方式。不幸的是,雖然註冊成功,但我得到了: 「在檢查權限時調用Server.CreateObject失敗,訪問被拒絕。」錯誤。

我已經做了大量的研究,發現你必須用'regasm'(我做過)註冊VB.NET DLL,你還需要勾選相應的(「Make assembly COM-Visible」)框。

但是,通過我所有的努力,似乎我運氣不佳。 爲了在VB.NET中創建COM DLL,我沒有讀到有關稱爲「COM類」的類模板的一些信息,但我沒有在模板選擇中使用該選項。

所以我的問題是,我改到Visual Studio(非快遞獲得COM類模板,如果是的話,那肯定工作?)

OR

有我做得不對的東西?

請注意移動到ASP.NET不是一種選擇,也不能在VB6中編程。

謝謝!

編輯

搜索大約整整一個星期後,我找到了答案,任何人誰發現這個頁面:http://social.msdn.microsoft.com/Forums/en-US/9f84bdf7-aace-4a57-a3e4-3863a0efb647/how-to-create-comvisible-dll-that-i-can-use-from-vba-using-vs-express-2008-beta-2

回答

0

答:

http://social.msdn.microsoft.com/Forums/en-US/9f84bdf7-aace-4a57-a3e4-3863a0efb647/how-to-create-comvisible-dll-that-i-can-use-from-vba-using-vs-express-2008-beta-2

  1. 內置.dll文件,並有針對性的.NET Framework 3.5,使其成爲COM可見。

  2. 使用隨Visual Studio 2008 Beta 2(因此> .NET Framework 3.5)一起安裝的GAC實用程序 - 它位於C:\ Program Files \ Microsoft SDKs \ Windows \ V.0A \ bin - 中地點.the產生.dll文件到GAC

  3. 使用的regsam.exe文件我發現在C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727到>註冊生成的.dll文件。

  4. 使用的tlbexp.exe文件我發現在C:\ Program Files文件\微軟的SDK \的Windows \ V.0A \ bin添加到> .EXPORT一個.tlb文件

  5. 在VBA IDE中,使用的工具 - >引用來瀏覽到.tlb文件並將其選爲> addtional引用。

的問題是,我沒有做第2步或第4步 我希望這可以幫助別人,將來爲我花了很長時間來解決。

0

人一定要仔細閱讀有關.NET很多。

你不能只寫一個.net DLL,然後在經典的ASP中使用它。這是兩種完全不同的技術。

它與visual Studio完全無關。 Visual Studio只是開發環境,完全與.NET Framework或Web應用程序無關。您無法使用visual Studio>版本6進行vb6編程。因此您無法使用Visual Studio 2008n或2010或2003或2005創建vb6 dll。

您可以編寫.net dll並在經典asp或任何其他com Aware技術中使用它們。但它們仍然是需要.net框架的.net dll。他們只是可見的。

就是有點複雜,但可能: 你的類和方法必須是「COM可見」您通過使用屬性實現這一[ComVisibleAttribute(true)] 之前每個方法之前,你的類和聲明你想成爲COM可見。 例如:

[ComVisibleAttribute(true)] 
public class Helper { 
    public Helper() { 
    } 

    [ComVisibleAttribute(true)] 
    public object parseDate(string strDate) { 
     return (object)DateTime.Parse(strDate).ToString("dd.MM.yyyy HH:mm:ss"); 
    } 
} 

,你必須使用一個emtpy構造你的類!

而且你必須檢查「Assemlby的COM可見」在項目屬性 - > assemblyinformation 或打開屬性/ AssemblyInfo.cs中添加以下代碼行:

[assembly: ComVisible(true)] 
[assembly: Guid("e2e1670d-1f90-4948-98be-27cc820b4675")] 

後,你必須建立自己的dll,那麼你必須使用ragasm.exe在註冊表中註冊.net dll。 (正常的.NET的DLL注registeres n默認情況下注冊表

你能做到這一點,像這樣:。

%windir%\Microsoft.NET\Framework\v4.0.30319\regasm.exe path/and/Name/of/your.dll /codebase 

,你必須確保路徑到您想要的.NET框架是正確的

之後,你必須重新啓動IIS,然後可以使用.NET的DLL methids從傳統的ASP

請注意,你只能通過和/返回簡單數據類型的值到.NET方法clasic asp like string,int等

+0

好的,所以,我已經嘗試過那些事情(我再次嘗試過,以防萬一),我說過。我也使用VB而不是C。我想也許你應該重新閱讀我所說的話。我絕對不會說視覺工作室只是一個開發環境。我問是否正常的視覺工作室附帶的模板「COM類」,而不是VS表達是我無法使用DLL的原因。 – sCaRy1337