2011-09-22 72 views
4

我正在關注來自http://www.servicestack.net/ServiceStack.Hello/的服務堆棧「Hello World」教程。但是當我嘗試啓動asp.net應用程序時,它說「值不能爲空,參數名稱:EndpointHost.Config」。服務堆棧Hello World教程:異常EndpointHost.Config爲空

完整的異常文本是:

[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'和'Inf​​oAppHost'或我錯過了什麼嗎? – 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

我們遇到了同樣的問題,並通過在擴展的ApplicationPool設置中將「Activate 32-bit-applications」設置爲true來解決它。 (對不起,只有德語Windows,所以設置名稱是粗略的猜測)