2015-09-09 1 views
1

Эта ошибка появляется только тогда, когда я публикую на Лазурном сервере:
Последовательность не содержит элементовErro на Ninject: Последовательность содержит никаких элементов

Я не уверен, что эта ошибка из-за Ninject. Я пробовал все советы с похожими ошибками, но, похоже, это общая ошибка.
Я попытался запустить тот же код на нескольких машинах, и эта ошибка не возникает только при открытии Azure.
Если вы что-то пережили и можете помочь, большое вам спасибо.

Трассировка стека:

[InvalidOperationException: Sequence contains no elements] 
    System.Linq.Enumerable.Single(IEnumerable`1 source) +311 
    Ninject.Web.Mvc.NinjectMvcHttpApplicationPlugin.Start() +44 
    Ninject.Web.Common.Bootstrapper.<Initialize>b__0(INinjectHttpApplicationPlugin c) +8 
    Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable`1 series, Action`1 action) +130 
    Ninject.Web.Common.Bootstrapper.Initialize(Func`1 createKernelCallback) +140 
    Splora.SploraV1.UI.Web.NinjectWebCommon.Start() +102 

[TargetInvocationException: Exception has been thrown by the target of an invocation.] 
    System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0 
    System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +192 
    System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +136 
    WebActivatorEx.BaseActivationMethodAttribute.InvokeMethod() +73 
    WebActivatorEx.ActivationManager.RunActivationMethods(Boolean designerMode) +350 
    WebActivatorEx.ActivationManager.Run() +78 

[InvalidOperationException: The pre-application start initialization method Run on type WebActivatorEx.ActivationManager threw an exception with the following error message: Exception has been thrown by the target of an invocation..] 
    System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +613 
    System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +141 
    System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +159 
    System.Web.Compilation.BuildManager.ExecutePreAppStart() +157 
    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +656 

[HttpException (0x80004005): The pre-application start initialization method Run on type WebActivatorEx.ActivationManager threw an exception with the following error message: Exception has been thrown by the target of an invocation..] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +4531288 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +94 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +191 



NinjectWebCommon.cs:

private static readonly Bootstrapper bootstrapper = new Bootstrapper(); 

    /// <summary> 
    /// Starts the application 
    /// </summary> 
    public static void Start() 
    { 
     DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); 
     DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); 
     bootstrapper.Initialize(CreateKernel); 
    } 

    /// <summary> 
    /// Stops the application. 
    /// </summary> 
    public static void Stop() 
    { 
     bootstrapper.ShutDown(); 
    } 

    /// <summary> 
    /// Creates the kernel that will manage your application. 
    /// </summary> 
    /// <returns>The created kernel.</returns> 
    private static IKernel CreateKernel() 
    { 
     var kernel = RegisterServices(); 
     try 
     { 
      kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel); 
      kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>(); 

      return kernel; 
     } 
     catch 
     { 
      kernel.Dispose(); 
      throw; 
     } 
    } 


    private static StandardKernel RegisterServices() 
    { 
     return new Container().GetModules(); 
    } 
+0

но где ваш код? –

+0

Какой код выполняет вызов «Enumerable.Single'? Что он делает «Одиночный»? – BatteryBackupUnit

+0

Я не знаю, где он собирается выбросить ошибку. Я не могу отлаживать это облако. –

ответ

1

я нашел проблему, на лазури, когда я опубликовал я не выбрал опцию «Удалить дополнительные файлы в месте назначения "на вкладке« Настройки »на экране публикации.

Следовательно, публикация не удаляла старые библиотеки DLL, которые я больше не использовал. Я очистил все файлы на Azure и опубликовал их снова, и это сработало.

После этого я опубликовал вариант «Удалить дополнительные файлы в месте назначения», и это не повторилось.

+0

Спасибо, Маркус. Это помогло мне. Я (безрассудно) попробовал вариант непрерывной интеграции от Bitbucket до Azure, и это круто перепутало меня. Я получил ту же ошибку, что и вы, когда я вернулся к публикации вручную. – oflahero

0

В моем случае эта проблема происходила в UAT, но не на моей машине.

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

Мне пришлось очистить папку выпуска и опубликовать ее снова. Все хорошо сейчас

 Смежные вопросы

  • Нет связанных вопросов^_^