ASP MVC2 развертывается на IIS 7 с ошибкой - PullRequest
1 голос
/ 26 апреля 2011

после того, как я развернул приложение на сервере IIS7, вначале все выглядит нормально и может отображать страницу входа. Но после того как пользователь ввел имя пользователя и пароль, я должен аутентифицировать пользователя с подключением к БД. В это время отображается ошибка (прилагается). Я предполагаю, что ошибка вызвана отражением во время загрузки EntityFramwork данных БД.

На моем сервере уже установлена ​​.net framework 3.5 sp1.

С другой стороны, я попробовал другой сервер. Если на сервере были установлены VS2008 и пакет MVC2 для VS2008, этот сервер может правильно запустить приложение в IIS7.

Моя цель - запустить приложение на сервере IIS7 только с .net framework 3.5.

Пожалуйста, помогите мне решить эту проблему.

Данные об ошибках:

Server Error in '/FDDV_demo' Application.
--------------------------------------------------------------------------------

Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.]
   System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark) +0
   System.Reflection.Assembly.GetTypes() +111
   System.Data.Metadata.Edm.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContext context) +28
   System.Data.Metadata.Edm.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContext context) +290
   System.Data.Metadata.Edm.AssemblyCacheEntry.LoadAssemblyFromCache(Assembly assembly, Boolean loadReferencedAssemblies, Dictionary`2 knownAssemblies, Dictionary`2& typesInLoading, List`1& errors) +137
   System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection, Assembly assembly, Boolean loadReferencedAssemblies) +284
   System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType(Type type) +33
   System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType(Type type, Assembly callingAssembly) +80
   System.Data.Objects.ObjectContext.CreateQuery(String queryString, ObjectParameter[] parameters) +106
   FDDV.Models.DBEntities.get_user_master() +113
   FDDV.Controllers.HomeController.validateUser(String userid, String password) +254
   FDDV.Controllers.HomeController.LogOn(LogOnModel model, String returnUrl) +134
   lambda_method(ExecutionScope , ControllerBase , Object[] ) +136
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +178
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +24
   System.Web.Mvc.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() +53
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +258
   System.Web.Mvc.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c() +20
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +193
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +316
   System.Web.Mvc.Controller.ExecuteCore() +104
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +36
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7
   System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +34
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +53
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +43
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +7
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8682542
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.4952; ASP.NET Version:2.0.50727.4955 

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Я наконец решил эту проблему. Основная причина - в проекте пропущены некоторые ссылки на сборки. Я добавляю следующий код в функцию входа в систему, чтобы узнать исключение загрузки типа отражения. Еще раз спасибо всем за помощь

try{
    //Do your work

        } 
    catch (Exception ex)
                        {

                            ReflectionTypeLoadException exception = ex as ReflectionTypeLoadException;

                            if (exception == null)
                                System.IO.File.AppendAllText("C:\\TestLog.txt", "Not a ReflectionTypeLoadException ex.");
                            else
                            {
                                foreach (Exception loaderException in exception.LoaderExceptions)
                                {
                                    System.IO.File.AppendAllText("C:\\TestLog.txt", loaderException.Message);
                                    System.IO.File.AppendAllText("C:\\TestLog.txt", loaderException.StackTrace);
                                }
                            }

                            return true;

                        }
0 голосов
/ 27 апреля 2011

Я слабо помню, что у меня была похожая проблема с MVC 3, когда я обновил проект с MVC 2 и у меня были некоторые проблемы с версией в моем web.config.

Попробуйте включить привязку журнала сборки Fusion и посмотрите, возможно, вы найдете, на чем сбой загрузки.

http://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx

Некоторое время назад я нашел скрипт, который позволял мне лучше работать с журналом Fusion в IIS (у меня были проблемы, когда он не работал в IIS).

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