0

Web ページの解析では、次の関数をローカルで実行すると正常に動作します。

Public Function GetElement(ByVal IHTMLDOMNode As mshtml.IHTMLDOMNode, ByVal InnerText As String) As mshtml.IHTMLElement

    Dim objIHTMLAnchorElement As mshtml.HTMLAnchorElementClass
    Dim s As String

    s = Microsoft.VisualBasic.Information.TypeName(IHTMLDOMNode)
    If s = "HTMLAnchorElementClass" Then
        t = GetType(mshtml.HTMLAnchorElementClass)
        objIHTMLAnchorElement = Marshal.CreateWrapperOfType(IHTMLDOMNode, t)

        If objIHTMLAnchorElement.innerText.Trim() = InnerText Then
                            Return objIHTMLAnchorElement
        End If
    End if

' code that loks at child nodes and makes a recursive call

ただし、Web ホスト プロバイダーにデプロイされると、同じ入力により、文字列 s が "HTMLAnchorElementClass" ではなく "HTMLAnchorElement" になります。

コードを次のように変更すると

    Dim objIHTMLAnchorElement As mshtml.HTMLAnchorElement
    Dim s As String

    s = Microsoft.VisualBasic.Information.TypeName(IHTMLDOMNode)
    If s = "HTMLAnchorElement" Then
        t = GetType(mshtml.HTMLAnchorElement)
        objIHTMLAnchorElement = Marshal.CreateWrapperOfType(IHTMLDOMNode, t)

        If objIHTMLAnchorElement.innerText.Trim() = InnerText Then
                            Return objIHTMLAnchorElement
        End If
    End if

「型は __ComObject であるか、__ComObject から派生している必要があります」というエラーが表示される

この動作の原因は何ですか?また、それに対して何ができますか?

4

1 に答える 1