Странное имя сборки Ошибка при посещении сайта с мобильных телефонов - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть веб-сайт, созданный в Asp.net MVC, который установлен в корневом каталоге среды общего хостинга.

Теперь я сделал мобильную версию для этого сайта в Asp.net MVC и установил ее.в качестве субдомена http://m.price -tag.org , который указывает на папку m (установленную как виртуальный каталог) в корневом каталоге.

Когда кто-то посещаетНа сайте с мобильного телефона отображается ошибка с полным именем сборки, которая исчезает при обновлении страницы.Ниже приведен снимок экрана для эмулятора iPhone, который отображает ту же ошибку.Даже в эмуляторе ошибка возникает при обновлении страницы.

enter image description here

Странно то, что тип, упомянутый в ошибке, используется на моем основном веб-сайте, а не на мобильном веб-сайте.Почему это происходит, когда мой мобильный проект совершенно другой и имеет собственный web.config, но почему-то кажется, что используется root.config root?Это может быть проблема web.config

ПРИМЕЧАНИЕ : - Оба проекта имеют свои собственные файлы EntityObject, Models и Web.config, и между ними ничего не передается.

РЕДАКТИРОВАТЬ : - Эта ошибка отображается только в мобильном телефоне ..... И это тоже первый раз, если обновляется страница, он исчезает.

РЕДАКТИРОВАТЬ с трассировкой стека

[InvalidOperationException: The type 'PriceCompare.Models.PriceCompareEntity, 
PriceCompare' could not be found. The type name must be an assembly-qualified name.]
System.Data.Entity.Internal.DatabaseInitializerConfig.ApplyInitializer() +315

[InvalidOperationException: не удалось установить инициализатор базы данных типа «Отключено» для типа DbContext «PriceCompare.Models.PriceCompareEntity, PriceCompare», указанного в конфигурации приложения.Записи должны быть в форме 'key = "DatabaseInitializerForType MyNamespace.MyDbContextClass, MyAssembly" value = "MyNamespace.MyInitializerClass, MyAssembly" "или" key = "DatabaseInitializerForType MyNamespace.MyDbContextD" значение = MySbaseseAs MySQL =.Класс инициализатора должен иметь конструктор без параметров.Подробности см. Во внутреннем исключении.] System.Data.Entity.Internal.DatabaseInitializerConfig.ApplyInitializer () +383 System.Data.Entity.Internal.DatabaseInitializerConfig.ApplyInitializersFromConfig () +288 System.Data.Entity.Internal.InternalContextatabasePerform+59 System.Data.Entity.Internal.LazyInternalContext.b__4 (InternalContext c) +7 System.Data.Entity.Internal.RetryAction 1.PerformAction(TInput input) +118 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action 1 действие) +190 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () +73 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (Тип entityType) +27 System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +62 System.Data.Entity.Internal.Linq.InternalSet 1.get_InternalContext () +15 System.Data.Entity.Infrastructure.DbQu* 1 источник, выражение 1 keySelector) +66 PriceMobile.Controllers.HomeController.Index() in HomeController.cs:19 lambda_method(Closure , ControllerBase , Object[] ) +40 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 2 параметра) +188 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 parameters) +27 System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +56 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func 1 продолжение) +267 System.Web.Mvc. <> C__DisplayClass () +20 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters (ControllerContext controllerContext, IList 1 filters, ActionDescriptor actionDescriptor, IDictionary 2 параметров) +190 System.Web.Mvc.ControllerActionInvoker.InvokeAction (ControllerContext controllerContext, строковое действиеName) +329 System.Web.Mvc.Controller.Mvc.ControllerBase.Execute (RequestContext requestContext) +93 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) +10 System.Web.Mvc. <> C__DisplayClassb.b__5 (+) +System.Web.Mvc.Async. <> C__DisplayClass1.b__0 () +21 System.Web.Mvc.Async. <> C__DisplayClass8 1.<BeginSynchronous>b__7(IAsyncResult _) +12 System.Web.Mvc.Async.WrappedAsyncResult 1.End () +55 System.Web.Mvc. <> C__DisplayClasse.b__d () +31 System.Web.Mvc.SecurityUtil.b__0 (Действие f) +7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust (Действие) +23 System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +59 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (результат IAsyncResult) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +8969117System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно) + 184

Ответы [ 4 ]

2 голосов
/ 15 февраля 2012

Виртуальные каталоги / приложения по умолчанию наследуют корневой файл web.config. Мы можем остановить это поведение, имея,

<location path="." inheritInChildApplications="false">

в корне web.config

Пожалуйста, посетите для получения дополнительной информации

1 голос
/ 15 февраля 2012

Вам необходимо использовать наследованиеInChildApplications, чтобы приложение внутри подкаталога не использовало конфигурацию корневого приложения.Подробнее см. this .

Для раздела appSettings нельзя использовать тег местоположения.Поэтому в конфигурациях, в которых используется пара ключ / значение, необходимо использовать тег clear в дочерних каталогах web.config

0 голосов
/ 10 февраля 2012

Две возможности: 1) PriceCompare не только является именем пространства имен и DLL, но также и именем некоторого типа.Система смущена этим омонимией.Попробуйте изменить либо имя типа, либо имя библиотеки DLL и пространства имен.2) веб-сайт не может найти dll PriceCompare с нужной версией.Это может произойти, потому что некоторая часть системы ссылается на старую версию этой библиотеки.Только одна из двух dll берется, поэтому одна из двух ссылок не работает.Очистите свой проект, чтобы решить эту проблему

0 голосов
/ 10 февраля 2012

Что-то поделено - PriceCompareEntity должно быть. У меня была похожая проблема. Я включил DLL в один проект, который имел ссылку на другой, который, как мне казалось, мне не нужен. Сбой сайта с аналогичной ошибкой вызова для типа в указанной DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...