|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Здравствуйте. Нужно через WCF-сервис организовать работу с базой данных...загрузка, выгрузка файлов из БД через клиентское приложение. Я начала с метода создания БД. Но есть загвоздка. Скрипт для создания БД рабочий, проверялся в sql-менеджере. Метод для создания БД-рабочий, проверялся в windows form application. а в wcf сервисе - БД не создается, по тому же методу с тем же скриптом! ошибка та - мало о чем мне говорит. Самое интересное, что в сервисе у меня 2 метода-создание БД и возврат сообщения. Метод с сообщением - работает! А база не создается. Я в тупике. Помогите пожалуйста, люди добрые :) . Мой маленький проект прилагается. Вот текст runtime-ошибки из Visual Studio: The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs. Я организовала лог-файл, вот ещё инфа оттуда: Exeption type: System.ServiceModel.FaultException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Message: такой же как из runtime. Stack trace: Server stack trace: System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter) System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown [0]: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) TestDBClient.ServiceReference1.IFileService.CreateDatabase() TestDBClient.ServiceReference1.FileServiceClient.CreateDatabase() in c:\Users\Administrator\Desktop\MyTest\FileServiceLib\TestDBClient\Service References\ServiceReference1\Reference.cs:line 59 TestDBClient.Program.Main(String[] args) in c:\Users\Administrator\Desktop\MyTest\FileServiceLib\TestDBClient\Program.cs:line 21 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() System.Threading.ThreadHelper.ThreadStart_Context(Object state) System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) System.Threading.ThreadHelper.ThreadStart() Я в растерянности. Очень надеюсь на вашу помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 11:51 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Dessi, авторturn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) Это сделали? Если нет, то вот msdn ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 12:15 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Lelouch, я так поняла, это свойство нужно чтоб получить детали ошибки? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 12:27 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Dessi, да ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 12:28 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Lelouch, спасибо, попробуем... о результате сообщу. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 12:30 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Lelouch, не совсем поняла, что писать вместо контракта ... contract=Microsoft.WCF.Documentation.SampleService ... contract="Microsoft.WCF.Documentation.ISampleService нужно заменить только SampleService, или полностью имя контракта? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 12:52 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Dessi, Если у вас уже есть некоторое поведение (behavior) в конфиге сервиса, то добавьте к нему вот такой раздел: Код: xml 1. 2. 3. 4.
Иначе, скопируйте раздел behaviors из примера на MSDN в конфиг вашего сервиса и укажите в этот атрибут: behaviorConfiguration="metadataAndDebug" в разделе <service> который описывает ваш сервис. Надеюсь, понятно) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 13:02 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
LelouchDessi, Если у вас уже есть некоторое поведение (behavior) в конфиге сервиса, то добавьте к нему вот такой раздел: Код: xml 1. 2. 3. 4.
Иначе, скопируйте раздел behaviors из примера на MSDN в конфиг вашего сервиса и укажите в этот атрибут: behaviorConfiguration="metadataAndDebug" в разделе <service> который описывает ваш сервис. Надеюсь, понятно) я уже по примеру из msdnразобралась, спасибо)) меня изначально смутил действительно тот факт, что у меня уже был behavior. Но я решила этот вопрос. И знаете что, Lelouch, мне сразу выдало адекватный текст runtime-ошибки) Оказывается, когда я дебагала метод создания БД в windows form application, то забыла скопировать отредактированный connection string в мой wcf-сервис, и в сервисе остался старый, неправильный! В общем... включение свойства IncludeExceptionDetailInFaults мне реально помогло понять где я накосячила! Спасибо вам! БД создалась!!! =) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 13:21 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Здравствуйте, уважаемые форумчане. У меня снова проблема... Пытаюсь записать файл в таблицу БД в поле типа varbinary(max) через ilestream и sqlfilestream... бьюсь уже над проблемой несколько дней... ничего не получается(( помогите пожалуйста смотрела статью: http://msdn.microsoft.com/ru-ru/library/cc716724(v=vs.110).aspx так даже там данные в БД вставляются INSERT-запросом, и лишь байтик. А как насчет реального файла?? про большой файл то вообще молчу... как модифицировать код из статьи, чтобы конкретный файл, например C:\Users\Administrator\Desktop\Image.png загружался в БД в поле типа varbinary(max)? спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 16:01 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Соответственно, при insert можно передать в запрос в качестве параметра весь контент файла в байтах. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 16:32 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Lelouch, я читала эту статью. Это всё не то. Опять же, в примерах - вставка записи с нулевой длинной, и вставка строки. У меня есть приложение. Клацаешь "upload", выбираешь файл и он должен вставиться в поле БД типа varbinary(max). Прочитала уже тонну информации, но так и не поняла как конкретный файл в базу запилить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 16:37 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Lelouch, надо на с# организовать всё это дело. Ну никак не выходит... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 16:39 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Вот код с мсдн: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Такое ощущение, что люди только и делают, что записывают по одному байту в файл. Нету никакого реального примера с реальным файлом...( ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 16:45 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
так и не могу до конца понять, что за transactionContext требует конструктор при создании экземпляра SqlFileStream. в документации сказано: The transaction context for the SqlFileStream object. Applications should return the byte array returned by calling the GET_FILESTREAM_TRANSACTION_CONTEXT method. Так что это, этот GET_FILESTREAM_TRANSACTION_CONTEXT, что он представляет собой? Это стрим, в который нужно записать файл, который ты хочешь инсертнуть в БД? что это?? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 16:56 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Dessi, для вставки файла в базу не нужно использовать GET_FILESTREAM_TRANSACTION_CONTEXT(). Достаточно просто вставить строку с контентом в базу. Ну показали вам в примере запись 1 байта, как это отменяет то, что вставка нового файла выполняется с помощью Insert? Пример запроса: Код: sql 1. 2. 3. 4.
Вы что, не знаете выполнить insert с помощью C#? оО ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 17:01 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Dessi, Код: c# 1.
Ну так посмотрите, как FileStream хранится на диске. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 17:02 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Dessi, http://msdn.microsoft.com/ru-ru/library/system.data.sqltypes.sqlfilestream.write(v=vs.110).aspx а еще у SqlFileStream есть вот такой метод, позволяет писать сразу многобайтов... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 17:04 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
LelouchDessi, для вставки файла в базу не нужно использовать GET_FILESTREAM_TRANSACTION_CONTEXT(). Достаточно просто вставить строку с контентом в базу. Ну показали вам в примере запись 1 байта, как это отменяет то, что вставка нового файла выполняется с помощью Insert? Пример запроса: Код: sql 1. 2. 3. 4.
Вы что, не знаете выполнить insert с помощью C#? оО я знаю, как выполнить insert с помощью C#. Я не знаю, как инсертнуть конкретный файл: картинку, видео, аудио... вот снова, в Вашем примере запроса идет просто вставка статически зашитого string-а. А нужно конкретный файл вставить... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 17:19 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
LelouchDessi, http://msdn.microsoft.com/ru-ru/library/system.data.sqltypes.sqlfilestream.write(v=vs.110).aspx а еще у SqlFileStream есть вот такой метод, позволяет писать сразу многобайтов... этот метод видела. но я к сожалению не до конца понимаю параметр buffer. Если я укажу 512, к примеру, то что, из всего файла только 512 байт прочитает? или тут имеется в виду, что в поток запишется весь файл порциями по buffer байт? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 17:21 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Dessi, примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Название таблицы, ее структура и количество параметров при вставке случайны. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 17:33 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Dessi, Он не прочитает а запишет. buffer это контент в байтах, offset - это номер байта в buffer с которого начнется запись, length - сколько байтов, начиная с offset будет записано. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 17:36 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
LelouchDessi, примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
Название таблицы, ее структура и количество параметров при вставке случайны. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 18:03 |
|
Создание БД через WCF-сервис
|
|||
---|---|---|---|
#18+
Dessi, большие желательно вставлять по-другому) записывая с помощью write небольшими кусками ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 18:05 |
|
|
start [/forum/topic.php?fid=19&fpage=10&tid=1396993]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 260ms |
total: | 409ms |
0 / 0 |