У меня есть сценарий, как импорт excel в базу данных через службу WCF с использованием как C#, так и VB. И я использую WCF Basichttpbinding.Ошибка ожидания службы WCF?
Рабочий поток
первенствовать оказывает 500 записей. У меня есть запрос Insert в службе. Я конвертирую записи Excel в набор данных (в C# и VB.Net), тогда я передаю один и тот же набор данных для обслуживания для вставки в базу данных, используя для каждого утверждения (дайте мне знать, если это смущает). После этого я пытаюсь отобразить вставленные записи в gridview, который находится в пользовательском интерфейсе (здесь проблема).
Проблема:
Когда я загрузки листа Excel, I'getting об ошибке, как показано ниже,
Сокет Соединение было прервано. Это может быть вызвано ошибкой обработки вашего сообщения или превышением времени приема удаленным хостом или проблемой сетевого ресурса. Локальный тайм-аут сокета был 00: 09: 59,9989999 ---> System.Net.Sockets.SocketException: Существующее соединение было принудительно закрыто удаленным узлом ....
выше ошибка отображения в клиентском приложении (UI). Но данные (от excel) по-прежнему вставляются в базу данных позади сцены.
Я попытался это:
Я попытался ниже вещи,
- Я попытался увеличить посыла тайм-аут (в 00:20:00) в пакете Web конфигурационный файл, а затем Я отразил тот же файл в клиентском приложении, но ничего не происходит, поскольку значения принимают значение по умолчанию. (Я полагаю, из configuration.svcinfo => В serializedValue время отправки равно 00:10:00).
- Я попытался увеличить maxreceivedMessageSize, maxBufferSize, maxBufferPoolSize, как указано [здесь]. (http://www.codeproject.com/Questions/633699/Socket-Exception-WCF). Но ничего не случилось.
Примечание: он отлично работает, когда я вставляю одну запись.
И другое препятствие заключается в том, что это происходит в моей машине. Но если я попробую то же самое на машине моего друга, я смогу получить 500 записей без каких-либо ошибок.
службы WCF Код для вставки:
Примечание: myds является набор данных, который содержит записи из листа Excel.
If myds.Tables.Count > 0 Then
If myds.Tables(0).Rows.Count > 0 Then
For Each dr In myds.Tables(0).Rows
InsertNewLog(userid, gno, pnumber)
Next
End If
End If
Private Sub InsertNewLog(userid As String, gno As Int32, pnumber As String)
Dim Oraclecon As New OracleConnection(System.Configuration.ConfigurationManager.AppSettings("ConnectionString"))
Dim transaction As OracleTransaction
Oraclecon.Open()
transaction = Oraclecon.BeginTransaction(IsolationLevel.ReadCommitted)
Dim myCMD As New OracleCommand("insert into Log_table(" & _
" USER_ID, " & _
" GROUP_No, " & _
" PRO_No") values (:p_userid,:p_groupno, :p_pronumber)
myCMD.Connection = Oraclecon
Dim p_userid As OracleParameter = New OracleParameter()
p_userid.OracleDbType = OracleDbType.Varchar2
p_userid.Value = userid
myCMD.Parameters.Add(p_userid)
Dim p_groupno As OracleParameter = New OracleParameter()
p_groupno.OracleDbType = OracleDbType.Int32
p_groupno.Value = groupnbr
myCMD.Parameters.Add(p_groupno)
Dim p_pronumber As OracleParameter = New OracleParameter()
p_pronumber.OracleDbType = OracleDbType.Varchar2
p_pronumber.Value = pronumber
myCMD.Parameters.Add(p_pronumber)
Try
myCMD.ExecuteNonQuery()
transaction.Commit()
Catch x
Throw New Exception(x.ToString())
transaction.Rollback()
Exit Sub
Finally
Oraclecon.Close()
Oraclecon.Dispose()
End Try
End Sub
позволяют WCF след, который поможет определить вопрос –
ли клиент должен ждать журнал процесс работает в или вы можете обрабатывать его асинхронно. – 3dd
@ 3dd Да, клиент должен дождаться завершения процесса. – gkrishy