Это действительно странно, я не могу обойти это.
У меня есть SqlDataSource, связанный с сеткой данных. Все работает хорошо, пока я не попробую перепривязать SqlDataSource. Тогда я получаю следующую ошибку:
Ошибка входа пользователя 'testuser'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Login failed for user 'testuser'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[SqlException (0x80131904): Login failed for user 'testuser'.]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4890855
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2412
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +35
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject, Boolean withFailover) +247
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +1349
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +225
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +185
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +431
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +31
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +112
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +287
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +92
System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +1297
System.Web.UI.WebControls.BaseDataList.GetData() +38
System.Web.UI.WebControls.DataGrid.CreateControlHierarchy(Boolean useDataSource) +153
System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) +54
System.Web.UI.WebControls.BaseDataList.DataBind() +55
System.Web.UI.WebControls.BaseDataList.EnsureDataBound() +60
System.Web.UI.WebControls.BaseDataList.OnPreRender(EventArgs e) +15
System.Web.UI.Control.PreRenderRecursiveInternal() +80
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842
Я смотрю на это уже несколько часов и просто не могу его найти. При отладке не возникает никаких исключений, но я вижу в профилировщике SQL, что запрос даже не запускается.
Так что происходит, когда страница загружается, а сетка данных заполняется. Затем, нажав на ссылку, запускается код, выполняющий подпрограмму, в которой я снова вызываю функцию, чтобы заполнить список (с обновленными значениями на этот раз). Здесь я получаю страницу с ошибкой сверху.
Это подводная лодка, которую я использую:
Sub UpdateInvoiceListNoEvent()
'Dim CmdBatch As New SqlCommand
Dim InvoiceSent As Integer = 0
Dim InvoiceReady As String = " "
Dim InvoiceSuccess As Integer = 0
Dim InvoiceFailed As Integer = 0
Dim SelectedEntity As String = " "
Try
Data_unbatched.Dispose()
If Len(drp_entity.SelectedValue.ToString()) > 1 Then
SelectedEntity = drp_entity.SelectedValue.ToString()
End If
If chk_Ready_search.Checked Then InvoiceReady = "approved"
If chk_Failed_search.Checked Then InvoiceFailed = 2
If chk_Sent_search.Checked Then InvoiceSent = 1
If chk_Success_search.Checked Then InvoiceSuccess = 3
Data_unbatched.ConnectionString = Conn.ConnectionString
Data_unbatched.SelectCommandType = SqlDataSourceCommandType.StoredProcedure
Data_unbatched.SelectParameters.Clear()
Data_unbatched.SelectCommand = "selectInvoices"
Data_unbatched.SelectParameters.Add("entity", " ")
Data_unbatched.SelectParameters.Add("ready", InvoiceReady)
Data_unbatched.SelectParameters.Add("sent", InvoiceSent)
Data_unbatched.SelectParameters.Add("failed", InvoiceFailed)
Data_unbatched.SelectParameters.Add("success", InvoiceSuccess)
tble_add_batch.Visible = True
grid_view_header.Visible = True
Catch sqlex As SqlException
Logger.Error(System.Reflection.MethodInfo.GetCurrentMethod.ToString + " -> " + sqlex.Message.ToString + " -> Stack trace: " + sqlex.StackTrace)
Catch ex As Exception
Logger.Error(System.Reflection.MethodInfo.GetCurrentMethod.ToString + " -> " + ex.Message.ToString + " -> Stack trace: " + ex.StackTrace)
Finally
If (Conn.State = ConnectionState.Open) Then
Conn.Close()
End If
posted = True
End Try
End Sub
У меня была похожая проблема, когда я пытался выполнить запрос с параметром varchar, установленным на "", тогда как в хранимой процедуре он был определен как varchar (4). Когда я установил параметр на "", он решил это
Но здесь я полностью застрял. Я могу оставить страницу как есть, но без обновления пользователь не увидит обновленные поля, пока не обновит вручную.
Я потерян, и любой вклад будет принят с благодарностью.