0

アプリケーションをローカルマシンからWebサーバーに移動するときにエラーが発生しました。(ローカルホストでエラーが発生していません)

例外をスローするコードを以下に示します。

Dim sSQL As String
Dim strXSLFile As String
sSQL = "<?xml version=""1.0""  ?>"
sSQL += "<ROOT xmlns:sql=""urn:schemas-microsoft-com:xml-sql"">"
sSQL += "<sql:header>"
sSQL += "<sql:param name='uid'/>"
sSQL += "<sql:param name='pwd'/>"
sSQL += "</sql:header>"
sSQL += "<SESSION>"
sSQL += "<LANG>" & lang & "</LANG>"
sSQL += "<SSN>" & Session.SessionID & "</SSN>"
sSQL += "</SESSION>"

sSQL += "<sql:query>exec objSession_login @uid,@pwd</sql:query>"
sSQL += "</ROOT>"

Dim myxml As New XmlDocument
Try
    Using conn As SqlConnection = CustomClass.Data.SqlConnectionProvider.Create()
        Dim cmd As SqlXmlCommand
        cmd = New SqlXmlCommand(conn.ConnectionString & ";Provider=SQLOLEDB.1;")
        cmd.CommandType = SqlXmlCommandType.Template
        cmd.CommandText = sSQL
        Dim paramUid As SqlXmlParameter = cmd.CreateParameter()
        paramUid.Name = "@uid"
        paramUid.Value = username
        Dim paramPwd As SqlXmlParameter = cmd.CreateParameter()
        paramPwd.Name = "@pwd"
        paramPwd.Value = password
        Dim oXR As XmlReader = cmd.ExecuteXmlReader() ' Problem is here
        myxml.Load(oXR)
    End Using

    strXSLFile = "xsl/Dialogue.login.xsl"
    Dim mytransform As New XslTransform
    Dim myreader As XmlReader
    Dim myresolver As XmlResolver

    Dim xpDoc As New XPathDocument(New XmlNodeReader(myxml))

    mytransform.Load(Current.Request.PhysicalApplicationPath & strXSLFile)
    myreader = mytransform.Transform(xpDoc, Nothing, myresolver)

    myxml.Load(myreader)
    mytransform = Nothing
    myreader = Nothing
    myresolver = Nothing
    xpDoc = Nothing

    xmlloaddoc = myxml

Catch ex As Exception
    LogWriter.CriticalError(ex, "User Login - Exception Thrown: " & ex.Message)
    Err.Raise(Number:=Err.Number, Description:=ex.StackTrace)
End Try

例外をスローしている特定の行は次のとおりです。DimoXRAsXmlReader = cmd.ExecuteXmlReader()

ロギング情報により、以下の例外が明らかになりました。

例外#1:

ユーザーログイン-例外がスローされました:SQLOLEDBまたはSQLNCLIをデータプロバイダーとして指定する必要があります。 "Microsoft.Data.SqlXml.SqlXmlException:SQLOLEDBまたはSQLNCLIをデータプロバイダーとして指定する必要があります。---> System.Runtime.InteropServices.COMException:SQLOLEDBまたはSQLNCLIをデータプロバイダーとして指定する必要があります。Microsoft.Data.SqlXml.Common.UnsafeNativeMethods.ISQLXMLCommandManagedInterface.ExecuteToOutputStream()at Microsoft.Data.SqlXml.SqlXmlCommand.innerExecute(Stream strm)---内部例外スタックトレースの終了- --Microsoft.Data.SqlXml.SqlXmlCommand.ExecuteStream()、Microsoft.Data.SqlXml.SqlXmlCommand.ExecuteXmlReader()、dialogue.login.UserLogin(String username、String password、String lang)

例外#2:

"ユーザーログイン-スローされた例外:HRESULTからの例外:0x80040E14" Microsoft.Data.SqlXml.SqlXmlException:HRESULTからの例外:0x80040E14 ---> System.Runtime.InteropServices.COMException:HRESULTからの例外:Microsoft.Data.SqlXmlの0x80040E14。 Common.UnsafeNativeMethods.ISQLXMLCommandManagedInterface.ExecuteToOutputStream()at Microsoft.Data.SqlXml.SqlXmlCommand.innerExecute(Stream strm)---内部例外スタックトレースの終了--- Microsoft.Data.SqlXml.SqlXmlCommand.ExecuteStream() dialog.login.UserLogin(String username、String password、String lang)のData.SqlXml.SqlXmlCommand.ExecuteXmlReader()

最初の例外は、SQLOLEDB.1をプロバイダーとして使用して発生した最初のエラーです。さまざまなプロバイダーを試してみて、2番目の2番目の例外を取得しました。

何か案は?

4

2 に答える 2

1

私が抱えていたこの問題は、MSXML 6.0が私のマシンにインストールされていたが、サーバーにはインストールされていなかったということでした。サーバーにMSXML6.0をインストールすると、この問題は解決しました。

于 2011-06-24T12:08:06.227 に答える
0

SQLOLEDBプロバイダーがターゲットマシンにインストールされていますか?動作することを確認して、再試行してください。

于 2011-06-22T16:14:59.470 に答える