2010-05-21 1 views
0

Я работаю над тем, чтобы мой проект ASP.Net работал в Linux. Я тестировал свой код с помощью XSP в Windows, но теперь я стараюсь, чтобы я мог разрабатывать и тестировать на Linux. С этой целью я запускаю Ubuntu и запускаю MonoDevelop и MySQL. Я загрузил последний MySQL Connector/Net, и я думаю, что он правильно установлен.Веб-сервер Mono XSP не может найти MySql.Web.dll в Linux

Нет пакета, который будет автоматически устанавливать соединитель MySQL/Net для распространения, поэтому я загрузил zip-файл 6.2.3 с сайта MySQL. Теперь я уже обнаружил проблему с чувствительностью к регистру, потому что zip-файл содержит имена файлов в нижнем регистре, а Mono ожидает их в верхнем регистре. Поэтому я изменил имена файлов на MySql.Data.dll и MySql.Web.dll соответственно. Я также использовал gacutil для установки обоих файлов в GAC. Аналогично, я добавил файлы в каталог Mono Lib. Следующие файлы существуют на моей машине:

/usr/lib/mono/gac/MySql.Data/6.2.3.0__c5687fc88969c44d/MySql.Data.dll 
/usr/lib/mono/gac/MySql.Web/6.2.3.0__c5687fc88969c44d/MySql.Web.dll 
/usr/lib/mono/2.0/MySql.Data.dll 
/usr/lib/mono/2.0/MySql.Web.dll 

Я также создал файлы пакет, так что я могу добавить ссылки на сборки в MonoDevelop. Папка /usr/lib/mono/2.0 содержит два .pc-файла, которые я добавил.

MySql.Web.pc:

Name: MySql.Web 
Description: ASP Membership, Role and Profile providers powered by MySQL 
Version: 6.2.3 
Libs: -r:/usr/lib/mono/gac/MySql.Web/6.2.3.0__c5687fc88969c44d/MySql.Web.dll 

MySql.Data.pc:

Name: MySql.Data 
Description: Provides connectivity to MySQL databases 
Version: 6.2.3 
Libs: -r:/usr/lib/mono/gac/MySql.Data/6.2.3.0__c5687fc88969c44d/MySql.Data.dll 

На данный момент я могу использовать сборки в проектах внутри MonoDevelop. Когда я редактирую ссылки на проект, сборки появляются в списке доступных сборок. Проект теперь компилируется без ошибок внутри MonoDevelop. Однако, когда я запускаю скомпилированный веб-проект в XSP, в браузере отображается следующая ошибка:

System.IO.FileNotFoundException: Не удалось загрузить файл или сборку 'MySql.Web.dll, Version = 6.2.3.0, Culture = нейтральный, PublicKeyToken = C5687FC88969C44D 'или одна из его зависимостей. Система не может найти указанный файл.

Что такое fustrating, так это то, что изначально ошибка заключалась в том, что он не мог загрузить MySql. Данные .dll и теперь сообщение об ошибке заключается в том, что он не может загрузить MySql. Веб .dll. Это означает, что я как-то устранил проблему, с которой я столкнулся с dll Data, и теперь у меня возникла проблема с веб-dll. Я пошел и переделал. Я научился исправлять проблему для dll Data, но я не могу заставить работать с dll.

К сожалению, я все еще довольно новичок в Linux и Mono (но не в ASP.Net), и у меня не хватило сил, чтобы попробовать. Аналогично, я ничего не нашел в Google, чтобы попытаться отличить от описанного выше, из-за чего я прошу помощи.

Может ли кто-нибудь помочь мне узнать, почему XSP не может найти сборку и что я могу с этим сделать?

Спасибо, -Будет

ответ

1

Вы можете попробовать установить некоторые переменные окружения, которые должны сказать вам, где все Mono ищут сборки:

MONO_LOG_LEVEL = «отлаживать» MONO_LOG_MASK = «DLL» xsp2

+0

Я получил некоторые результаты, которые могут быть релевантными. См. Здесь (docs.google.com/View?id=dvwt9nw_45f5t7crdx). Интересно, что он загружает загруженный MySql.Data.dll (он первый в моем файле Web.config). Затем он пытается загрузить MySql.Web.dll, но за ним следуют ошибки загрузки libc.so.6. Моя интерпретация заключается в том, что мне не хватает этой библиотеки, но я могу ошибаться. Любые идеи, что делать дальше? –

+0

Возможно, вы захотите проверить сайт MySql и посмотреть, совместим ли MySql.Data с Mono. – jpobst

+0

Я не думаю, что это проблема совместимости. Я заметил, что в журнале вы помогли мне сгенерировать это в какой-то момент, он пытается искать DLL в /usr/lib/MySql.Web.dll. Я разместил файл там, и сайт теперь запускается. Однако я считаю, что это признак ошибки где-то. Что происходит, когда у меня есть два приложения, которые зависят от разных версий dll. Я не могу иметь две версии одной и той же DLL в/usr/lib. Я не знаю, почему он не может использовать одну из трех других копий файла (один в билете проекта, один в GAC и один в /usr/lib/mono/2.0) –

0

Не совершенный фикс (я не знаю, почему его происходит не так), но если вы в спешке, скопируйте MySql.Web.dll в каталог Ыпа вашего приложение.

+0

Что у меня есть ASP. Net Web Project, который скомпилирует все в ProjectName.dll в папке bin. У меня есть файлы DLL MySql в этой папке, но изменений в выводах, отображаемых в браузере, нет. –