2011-09-22 1 views
4

Я следую за учебным стеком «Hello World» из http://www.servicestack.net/ServiceStack.Hello/. Но когда я пытаюсь запустить приложение asp.net, он говорит: «Значение не может быть пустым. Имя параметра: EndpointHost.Config».Service Stack Hello World tutorial: exception EndpointHost.Config is null

Полный текст Исключение:

[ArgumentNullException: Der Wert darf nicht NULL sein. 
Parametername: EndpointHost.Config] 

[ConfigurationErrorsException: ServiceStack: AppHost does not exist or has not been initialized. Make sure you have created an AppHost and started it with 'new AppHost().Init();' in your Global.asax Application_Start()] 
    ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory..cctor() in C:\src\ServiceStack\src\ServiceStack\WebHost.EndPoints\ServiceStackHttpHandlerFactory.cs:45 

[TypeInitializationException: Der Typeninitialisierer für "ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory" hat eine Ausnahme verursacht.] 

[TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht.] 
    System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0 
    System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +86 
    System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +230 
    System.Activator.CreateInstance(Type type, Boolean nonPublic) +67 
    System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1051 
    System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +111 
    System.Web.Configuration.HttpHandlerAction.Create() +57 
    System.Web.Configuration.HandlerFactoryCache..ctor(HttpHandlerAction mapping) +19 
    System.Web.HttpApplication.GetFactory(HttpHandlerAction mapping) +96 
    System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) +125 
    System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +93 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 

Мой глобальный класс:

public class Global : System.Web.HttpApplication 
    { 
     /// Web Service Singleton AppHost 
     public class InfoAppHost : AppHostBase 
     { 
      //Tell Service Stack the name of your application and where to find your web services 
      public InfoAppHost() 
       : base("Services", typeof(InfoService).Assembly) { } 

      public override void Configure(Funq.Container container) { } 
     } 

     protected void Application_Start(object sender, EventArgs e) 
     { 
      //Initialize your application 
      var appHost = new InfoAppHost(); 
      appHost.Init(); 
     } 
    } 

Но, кажется, никогда не дозвонились. Составление примера проекта с главной страницы прекрасно работает, но я хотел бы следовать примеру с домашней страницы. Любые идеи, как решить эту проблему?

+0

Может быть, вы смешиваете 'PMSInfoAppHost' и' InfoAppHost', или я что-то упускаю? – Filburt

+0

Нет, это было сделано только для защиты невинных (клиентов) :) И я забыл изменить это явление в примере. – bernhardrusch

+0

Таким образом, исключение не является результатом PMS ;-) – Filburt

ответ

2

Я удалил свой тестовый проект и снова попробовал учебник.

При создании файла Global.asax я удалил весь класс и сделал еще один класс Global в этом файле. Кажется, Application_Start никогда не вызывался в этом классе.

1

Проблема, о которой вы могли догадаться, заключается в том, что appHost.Init() не запущен. Попробуйте обернуть его в try/catch и зарегистрировать любые ошибки, которые могли быть выброшены.

+0

Я пробовал это - но это не сработало - никогда не возникало исключение. Он просто не вызвал мой appHost.Init(). После запуска нового файла Global.asax он работал. – bernhardrusch

0

Взял меня некоторое время, чтобы понять, что я делаю неправильно, чтобы вызвать эту проблему ...

это случилось со мной, потому что я случайно вытащили Global.asax файл в подпапку в моем проекте.

0

Я обнаружил, что эта ошибка вызвана WebApiConfig. В примере используется ServiceStack и не нужен ASP.NET Web API. Эта строка должна быть прокомментирована в файле Gloabal.asax.cs.

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     // ** comment out ** WebApiConfig.Register(GlobalConfiguration.Configuration); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 

     new ProteinTrackerAppHost().Init(); 
    } 
1

У нас была такая же проблема, и решить ее, установив «Активировать 32-разрядные приложения» к подлинному в расширенных настройках ApplicationPool. (извините, у вас есть только немецкие Windows, поэтому имена настроек - грубые догадки)

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