| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка под ASP.NET > ADO.NET Data Providers |
| Автор: Radekk 13.2.2014, 09:20 | ||
| win 7 x64 vs express 2013 for web Как в приложении правильно указать дата провайдер
указываю провайдер(в моем случае феникс, так же сюда можно указать все начиная с мускула); в приложении в папке Bin лежит тот самый .нет провайдер FirebirdSql.Data.FirebirdClient.dll с оф сайта. при запуске выдает ошибку An exception of type 'System.Configuration.ConfigurationErrorsException' occurred in System.Data.dll but was not handled in user code Additional information: Failed to find or load the registered .Net Framework Data Provider. как мне правильно указывать провайдер приложению чтобы обойтись без установки FirebirdSql.Data.FirebirdClient.dll в глобальный кэш сборок(GAC)? |
| Автор: jonie 13.2.2014, 13:13 |
| пробывали указать FullName ? Что выдает fuslogvw ? |
| Автор: Radekk 13.2.2014, 15:27 | ||
ResourceType.FullName - свойство Это вы про это? fuslogvw выдает такой поток информации что за раз сложно все пересмотреть и найти нужное. уже вроде зарегестрировал гакутилом эту длл, но все равно работать не хочет хоть убейся, да и в папку c:\Windows\assembly нужная длл не попадает хотя гакутил говорит что зарегестрирована. |
| Автор: Radekk 14.2.2014, 11:49 | ||
Вроде нашел *** Assembly Binder Log Entry (14.02.2014 @ 9:52:13) *** The operation was successful. Bind result: hr = 0x0. The operation completed successfully. Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll Running under executable C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Microsoft.VisualStudio.Web.Host.exe --- A detailed error log follows. === Pre-bind state information === LOG: DisplayName = FirebirdSql.Data.FirebirdClient (Partial) WRN: Partial binding information was supplied for an assembly: WRN: Assembly Name: FirebirdSql.Data.FirebirdClient | Domain ID: 2 WRN: A partial bind occurs when only part of the assembly display name is provided. WRN: This might result in the binder loading an incorrect assembly. WRN: It is recommended to provide a fully specified textual identity for the assembly, WRN: that consists of the simple name, version, culture, and public key token. WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue. LOG: Appbase = file:///c:/users/rlohmatov/documents/visual studio 2013/Projects/Testing/Testing/ LOG: Initial PrivatePath = c:\users\rlohmatov\documents\visual studio 2013\Projects\Testing\Testing\bin LOG: Dynamic Base = C:\Users\rlohmatov\AppData\Local\Temp\Temporary ASP.NET Files\root\0d641bac LOG: Cache Base = C:\Users\rlohmatov\AppData\Local\Temp\Temporary ASP.NET Files\root\0d641bac LOG: AppName = 4bbb80d4 Calling assembly : (Unknown). === WRN: No matching native image found. Сейчас перечитаю еще с десяток раз может и врублюсь в чем дело, если можете подсказать буду рад. по поводу GAC установил сегодня сборку firebirdsql.visualstudio.datatools gac показывает что установка успешна ссылка на нее появилась в c:\Windows\assembly то же самое пытаюсь сделать с firebirdsql.data.firebirdclient.dll gac выводит: C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools>gacutil -l firebirdsql.data.firebirdclient Microsoft ® .NET Global Assembly Cache Utility. Version 4.0.30319.18020 Copyright © Microsoft Corporation. All rights reserved. The Global Assembly Cache contains the following assemblies: firebirdsql.data.firebirdclient, Version=4.1.0.0, Culture=neutral, PublicKeyTo ken=3750abcc3150b00c, processorArchitecture=MSIL Number of items = 1 при запуске сайта из вижуал студии валится опять же $exception {"Unable to find the requested .Net Framework Data Provider. It may not be installed."} System.Exception {System.ArgumentException} dataProviderName "FirebirdSql.Data.FirebirdClient" string я что неправильно установил в гаке эту сборку??? выбрал сборку которая - FirebirdClient - .NET 4.0, 7-Zip archive На машине фреймворк тоже 4.0 стоит, уже ума не приложу куда копать. Не хочет работать и все тут. Заранее спасибо. Сильно не пинайте, я не волшебник - я только учусь. По поводу переезда гака вроде понял, но есть еще момент, приложение еще на версии 3.5 версии фреймворка, добавил провайдер для этой версии в гак, в web.config <DbProviderFactories> <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".Net Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=2.5.2.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/> </DbProviderFactories> И опять же та же самая ошибка, вроде и провайдер установил, и в приложении версию провайдера указал и все равно не хочет, не могу понять что я делаю не так. upd. Один из старых проектов, к который мне со всем остальным достался по наследству, запустился, у него на борту в папке Bin лежит длл с провайдером, работает нормально не ругается. Я вот сижу и думаю в чем причина, сравнил web.config файлы нашел лишь одно различие <assemblies> <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="FirebirdSql.Data.FirebirdClient, Version=2.5.2.0, Culture=neutral, PublicKeyToken=3750ABCC3150B00C"/> </assemblies> Поправил в приложении которое разрабатываю не помогло.... Может подскажет кто, как мне запихнуть правильно длл файл в бин чтоб работало все?? |
| Автор: jonie 17.2.2014, 09:22 | ||||
так вы накой черт записываете в веб конфиг свой версию, которой у вас нет? У вас другая версия же:
|
| Автор: Radekk 18.2.2014, 12:08 | ||
Извиняюсь видимо не совсем правильно отписал, я с чистым GAC в котором уже не было фаербердового дата провайдера подключал через длл (версии 2,5) и работало одно приложение, остальные так же ругались на отсутствие сборки в гаке. А когда установил 4 версию провайдера и в web.config указал версию и публичный ключ из GAC то ничегошеньки не работало выбивало ошибку, о том что провайдер не найден. В общем снес вчера 13 студию, поставил 12 студию, скачал FirebirdSql.Data.FirebirdClient.dll (NETProvider-3.2.0.0-NET35.7z в ней указано что под версию 3.5 фреймворка)под администратором скопировал в Program Files(x86), опять же под администратором запустил gacutil -i и записал ее в глобальную сборку и к моему удивлению заработало. Проблема в том что мне должны купить сейчас 13 версию и я боюсь повторения геморроя, а поддерживать старые приложения надо плюс еще и новые разрабатывать. Еще вопрос, с дата провайдерами надо устанавливать отдельный провайдер под каждую версию фреймворка???(я просто где-то вычитал, что версии фреймворка не поддерживают обратную совместимость и из-за этого возникают проблемы, правда пока не знаю относится ли это к дата провайдерам) Приложения написаны под 3.5, новая студия дает создавать только на 4.0 и 4.5 может из-за этого возникают проблемы? Ну то есть у нее приложение запускается под какой версией фреймворка?Или к WebForms это не относится??? Спасибо заранее. |
| Автор: jonie 18.2.2014, 18:19 |
| вы таки fuslogvw лог посмотрели? GAC там не особо нужен, если вы укажите нормальное полное имя сборки и класса, положив сбоственно сборку в bin каталог (обычно) асп.нет приложения с нужной битностью... |
| Автор: Radekk 15.5.2014, 11:32 |
да смотрел и не раз, чет совсем не понимаю, если в гаке прописано, то работает и в fuslogvw даже не появляется запись, пробовал смотреть "Запись ошибок привязки", там пусто, а сообщение "Не удалось найти запрошенного поставщика данных .net framework" вылазит с досадной постоянностью, на другом уже рабочем вебсайте все работает, фуслог показывает, что загружается сборка та которая в проекте, а не сборка из гака *** Assembly Binder Log Entry (15.05.2014 @ 9:53:32) *** The operation was successful. Bind result: hr = 0x0. The operation completed successfully. Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll Running under executable C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\11.0\WebDev.WebServer20.exe --- A detailed error log follows. === Pre-bind state information === LOG: User = YYYY\xxxxxx LOG: DisplayName = FirebirdSql.Data.FirebirdClient, Version=2.5.2.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c (Fully-specified) LOG: Appbase = file:///C:/MyFolder/New_websites/WebSiteName/ LOG: Initial PrivatePath = C:\MyFolder\New_websites\WebSiteName\bin LOG: Dynamic Base = C:\Users\xxxxxx\AppData\Local\Temp\Temporary ASP.NET Files\WebSiteName\5e59a13c LOG: Cache Base = C:\Users\xxxxxx\AppData\Local\Temp\Temporary ASP.NET Files\WebSiteName\5e59a13c LOG: AppName = 2aac5f Calling assembly : (Unknown). === LOG: This bind starts in default load context. LOG: Using application configuration file: C:\MyFolder\New_websites\WebSiteName\web.config LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config. LOG: Post-policy reference: FirebirdSql.Data.FirebirdClient, Version=2.5.2.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c LOG: GAC Lookup was unsuccessful. LOG: Attempting download of new URL file:///C:/Users/xxxxxx/AppData/Local/Temp/Temporary ASP.NET Files/WebSiteName/5e59a13c/2aac5f/FirebirdSql.Data.FirebirdClient.DLL. LOG: Attempting download of new URL file:///C:/Users/xxxxxx/AppData/Local/Temp/Temporary ASP.NET Files/WebSiteName/5e59a13c/2aac5f/FirebirdSql.Data.FirebirdClient/FirebirdSql.Data.FirebirdClient.DLL. LOG: Attempting download of new URL file:///C:/MyFolder/New_websites/WebSiteName/bin/FirebirdSql.Data.FirebirdClient.DLL. LOG: Assembly download was successful. Attempting setup of file: C:\MyFolder\New_websites\WebSiteName\bin\FirebirdSql.Data.FirebirdClient.dll LOG: Entering download cache setup phase. LOG: Assembly Name is: FirebirdSql.Data.FirebirdClient, Version=2.5.2.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c WRN: A duplicate assembly was found while copying the assembly item to the cache. LOG: Binding succeeds. Returns assembly from C:\Users\xxxxxx\AppData\Local\Temp\Temporary ASP.NET Files\WebSiteName\5e59a13c\2aac5f\assembly\dl3\bdb483eb\f47fc383_3116cd01\FirebirdSql.Data.FirebirdClient.dll. LOG: Assembly is loaded in default load context. в гаке стоит версия 3.2.0.0 и он ее не запускает, не могу никак понять почему из гака, если я добавил что грузить надо <assemblies> <add assembly="FirebirdSql.Data.FirebirdClient, Version=4.1.5.0, Culture=neutral, PublicKeyToken=3750ABCC3150B00C"/> </assemblies> сборку саму в бин папку, эффекта ноль |
| Автор: jonie 15.5.2014, 20:56 |
У вас в bin лежит версия 2.5.2.0, в GAC - 3.2.0.0, вы патаетесь указать компоновщику чтобы он ссылался на 4.1.5.0 (которой вообще нет судя по-всему). 2.5.2 несовместима с 3.2.0, если только не указан BindingRedirect.. Короче мой вам совет : РАЗБЕРИТЕСЬ с мусором на машине, и что где лежит. ИЗУЧИТЕ где ищутся сборки. ПРОЧИТАЙТЕ про параметры в веб конфиге и про BindingRedirect. |
| Автор: Radekk 16.5.2014, 08:28 |
На работающем лежит 2.5(в bin и web.config) и он запускается(с установленным 3.2.0 в гаке, лог я привел от этого веб сайта ( fuslogvw показывает сборка запускается из бин папки)) 4.1.5.0 в другом проекте, это скачанная из NuGet сборка, и вот версию 4.1.5.0 я не смог запустить из бина веб апликейшна (mvc 4 версия фреймворка 4.0) как я не бился, та же ситуация с веб сайтами(на этот момент в гаке была установлена версия 3.2). Неужто есть сборки которые без гака не запускаются? кстати сегодня еще раз попробовал, выбил 3.2.0.0 из GAC создал вебсайт куда в бин закинул сборку 3.2.0.0(в web.config указал сборку на 3.2.0.0) и она не захотела запускаться (опять же вебсайт у которого в бин лежит 2.5 и в конфиге она же прописана стартанул без проблем), с 4.1(опять же из NuGet, в бин и конфиге) тоже не захотел запускаться ссылаясь на его отсутсвие. еще может подскажете, в fuslogvw попытался выставить log bind faulures to disk при запусках веб сайтов туда почему-то ничего не пишется, не смотря на то что в бин лежит сборка которую должна запускаться вместе со всем сайтом. Насколько я понимаю, провайдера фаерберда надо ставить в GAC для того чтобы Visual Studio могла соединяться с ним, для проектов его достаточно просто добавлять в сам проект и все должно работать, но на деле что-то у меня не получается. вроде правильно расписал, а то в предыдущем посту получилась каша маленько. спасибо за помощь. |
| Автор: jonie 16.5.2014, 09:32 | ||
права на каталог проверяйте. Проверяйте тажке разрядность сборок, версию фреймворка под которой запускаете сайт и т.д. |