将我的应用程序从本地计算机移动到 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
引发异常的特定行是:Dim oXR As XmlReader = cmd.ExecuteXmlReader()
日志信息显示以下异常:
例外 #1:
用户登录 - 抛出异常:必须将 SQLOLEDB 或 SQLNCLI 指定为数据提供者。” Microsoft.Data.SqlXml.SqlXmlException:必须将 SQLOLEDB 或 SQLNCLI 指定为数据提供者。---> System.Runtime.InteropServices.COMException:SQLOLEDB或 SQLNCLI 必须指定为数据提供者。在 Microsoft.Data.SqlXml.SqlXmlCommand.innerExecute(Stream strm) 的 Microsoft.Data.SqlXml.Common.UnsafeNativeMethods.ISQLXMLCommandManagedInterface.ExecuteToOutputStream() --- 内部异常堆栈跟踪结束 - -- 在 Microsoft.Data.SqlXml.SqlXmlCommand.ExecuteStream() 在 Microsoft.Data.SqlXml.SqlXmlCommand.ExecuteXmlReader() 在 dialog.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() 在 Microsoft.Data.SqlXml.SqlXmlCommand.innerExecute(Stream strm) --- 内部异常堆栈跟踪结束 --- 在 Microsoft.Data.SqlXml.SqlXmlCommand.ExecuteStream()。 Data.SqlXml.SqlXmlCommand.ExecuteXmlReader() 在 dialog.login.UserLogin(字符串用户名,字符串密码,字符串语言)
第一个异常是使用 SQLOLEDB.1 作为我的提供程序出现的第一个错误,我开始使用不同的提供程序并得到第二个第二个异常。
有任何想法吗?