2011-09-22 11 views
4

サービススタック "Hello World"チュートリアルをhttp://www.servicestack.net/ServiceStack.Hello/から実行しています。しかし、私はasp.netアプリケーションを起動しようとしているときに、 "値はnullではありません"と言います。パラメータ名:EndpointHost.Config。サービススタックHello Worldチュートリアル:例外EndpointHost.Configが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

拡張されたApplicationPool設定では、「Activate 32-bit-applications」をtrueに設定することで同じ問題が解決されました。 (申し訳ありません、ドイツ語のWindowsしかないので、設定名は大まかな推測です)