2011-07-19 45 views
2

我有功能類似這樣的.NET消費.NET函數的結果對經典類返回對象ASP

Public Class P 
    Public Function GetObjectForMyClass(ByVal _MyClass As MyClass) As MyClass 
     _MyClass.Name="Mahi New" 
     Return _MyClass 
    End Function 
End Class 

現在,我們有以下經典ASP頁:

<% 
Dim P 
Dim MyClass 
Set P = Server.CreateObject("Project.Assembly.Namespace.P") 
Set MyClass = Server.CreateObject("Project.Assembly.Namespace.MyClass") 
MyClass.Name="Mahi" 

MyClass= P.GetObjectForMyClass(MyClass) 
... 
... 
... 
%> 

這個捐贈錯誤是這樣的:

Microsoft VBScript運行時錯誤 '800a0005'

無效的過程調用或參數:'GetObjectForMyClass'

+0

將'GetObjectForMyClass'的返回值更改爲基本類型如字符串時會發生什麼?它工作正常嗎? –

回答

0

您是否正在暴露livrary上的COM接口?

如果沒有,揭露從.NET類型庫的COM接口,因此它可以從一個傳統的ASP頁面調用我們需要:

  1. 確保裝配GUID分配,例如: [assembly: Guid("dde7717b-2b75-4972-a4eb-b3d040c0a182")]

  2. 確保標記有ComVisible特性屬性爲true - [assembly: ComVisible(true)]

  3. 檢查項目選擇「註冊爲COM互操作」

  4. 在該類上放置一個GUID屬性,例如, [GuidAttribute( 「4df74b15-d531-4217-af7e-56972e393904」)]

  5. 確保你在你的代碼中的命名空間聲明:使用Regasm.exe

using System.Runtime.InteropServices;

  • 註冊

    編輯 鑑於您已經暴露了COM接口,您是否嘗試了以下操作(使用set):

    set MyClass= P.GetObjectForMyClass(MyClass) 
    
  • +0

    謝謝詹姆斯。是的,我做了以上的事情,如果我只是這樣調用P.GetObjectForMyClass(MyClass) Response.Write(MyClass.Name),那麼它給這樣的結果「Mahi New」,所以它調用的功能,沒有問題調用該函數,但它給出的錯誤,而將其設置爲對象(如:MyClass = P.GetObjectForMyClass(MyClass))。但我希望它設置爲對象。 – Avinash

    +0

    @AvinasH:見上面的修改。 –

    +0

    詹姆斯我也試過以上的解決方案,但它是同樣的例外。 – Avinash