Текущая проблема: при локальном запуске файла asmx для проверки его работоспособности постоянно появляется сообщение об отсутствии значения, указанного ниже.Я добавил параметры сейчас, но ошибка все еще появляется.
Однако теперь я чувствую, что ошибка не в asmx, так как люди изменили SQL для правильной работы.Это файл aspx, в котором передается необходимая информация.Возможно ли, что существует проблема с передачей переменных сеанса, которые установлены?
Dim Secure As New Visa.VISAServices()
Dim authHeader As New Visa.AuthenticationHeader()
authHeader.username = "HSBC"
authHeader.password = "password"
Secure.AuthenticationHeaderValue = authHeader
Session("sessionsortnum") = sortnum.Text
Session("sessionaccount") = account.Text
'Change type for the sortcode
Dim sortcode As String = CType(Session.Item("sessionsortnum"), String)
Dim accountnumber As String = CType(Session.Item("sessionaccount"), String)
lblVisa.Text = Secure.AuthenticateCardSecure(pin.Text, sortnum.Text, account.Text)
'NEEDS TO STAY HERE DO NOT MOVE!
Session("sessioncase") = lblVisa.Text
Dim selectcase As String = CType(Session.Item("sessioncase"), String)
'Tests - Being sent to the session var
testsort.Text = sortcode
testbank.Text = accountnumber
testselectc.Text = selectcase
Это - то, как сеансы передаются от одного сервиса, к которому подключается, и sortcode, accountnumber и selectcaseвсе отображаются правильно.
Этот файл вызывает asmx:
Private Sub checkbalance(ByVal sender As Object, ByVal e As System.EventArgs)
Dim sortcode As String = CType(Session.Item("sessionsortnum"), String)
Dim accountnumber As String = CType(Session.Item("sessionaccount"), String)
Dim selectcase As String = CType(Session.Item("sessioncase"), String)
testsort.Text = sortcode
testbank.Text = accountnumber
testselectc.Text = selectcase
Select Case testselectc.Text
Case "1111111111"
'Dim lloydsbalance As New Lloyds.
'screen.Text = lloydsbalance.overdraft(accountnumber)
Case "2222222222"
Dim barclaysbalance As New Barclays.Transactions()
screen.Text = barclaysbalance.overdraft(accountnumber, sortcode)
Case "3333333333"
Dim santanderbalance As New Santander.Santander()
screen.Text = santanderbalance.overdraft(accountnumber, sortcode)
Case "4444444444"
Dim HSBCbalance As New HSBC.HSBC()
screen.Text = HSBCbalance.OverDraft(accountnumber)
Case "5555555555"
Dim halifaxbalance As New Halifax.Halifax()
screen.Text = halifaxbalance.overdraft(accountnumber)
Case "6666666666"
Dim natwestbalance As New Natwest.natwest()
screen.Text = natwestbalance.overdraft(accountnumber, sortcode)
End Select
End Sub
Исходная проблема: всякий раз, когда я запускаю asmx локально, просто чтобы проверить, работает ли он, я просто получаюошибка.Я проверил вызываемую функцию, но не могу найти ошибку.Я надеюсь, что кто-то может определить, что я сделал неправильно.
Ошибка:
System.Data.OleDb.OleDbException: Не задано значение для одного или нескольких обязательных параметров.в System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult hr) в System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult (tagDBPARAMS.OleDb.OleDbCommand.ExecuteCommand (поведение CommandBehavior, Object & executeResult) в System.Data.OleDb.OleDbCommand.ExecuteReaderInternal (поведение CommandBehavior, метод String) в System.Data.OleDb.OleDbCommand.ExBegn) в HSBC.OverDraft (номер учетной записи Int64)
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Overdraft Call
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<WebMethod()> Public Function OverDraft(ByVal accountnumber As Long) As String
Return over(accountnumber)
End Function
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Overdraft function
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Creates a service web method
Private Function over(ByVal accountnumber As Long) As String
'Open the connection to the database
Dim BalanceDr As OleDbDataReader
Dim connectioncmd As OleDbCommand
Dim connection As OleDbConnection
Dim connx As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../database/HSBc.mdb") & ";"
Dim SQL As String = "SELECT Customer_Overdraft FROM Customer WHERE Account_Number=?"
Dim overdraft As String
connection = New OleDbConnection(connx)
connectioncmd = New OleDbCommand(SQL, connection)
connection.Open()
'Create a DataReader that will return information.
BalanceDr = _
connectioncmd.ExecuteReader(CommandBehavior.CloseConnection)
If BalanceDr.Read() Then
'A row was returned
overdraft = BalanceDr(0)
Else
'A row was not returned
overdraft = "No Balance For Account Found"
End If
BalanceDr.Close()
Return overdraft
End Function
номер учетной записи хранится в сеансе, который был возвращен из службы, созданной кем-то другим, я знаю, что она передается правильно, как и на любой страницеЯ проверяю, правильно ли он отправляется и используется.
У кого-нибудь есть предложения?Я также добавил все необходимые разрешения в базу данных.