9

MVC3 プロジェクトに ServiceStack を実装しようとしています。http ://www.servicestack.net/ServiceStack.Hello/ のチュートリアルに従っています。

私の Global.asax.cs は次のようになります。

    public class MvcApplication : System.Web.HttpApplication
    {
        public class Hello
        {
            public string Name { get; set; }
        }

        public class HelloResponse
        {
            public string Result { get; set; }
        }

        public class HelloService : IService<Hello>
        {
            public object Execute(Hello request)
            {
                return new HelloResponse { Result = "Hello, " + request.Name };
            }
        }

        public class HelloAppHost : AppHostBase
        {
            //Tell Service Stack the name of your application and where to find your web services
            public HelloAppHost() : base("Hello Web Services", typeof(HelloService).Assembly) { }

            public override void Configure(Container container)
            {
                //register user-defined REST-ful urls
                Routes
                  .Add<Hello>("/hello")
                  .Add<Hello>("/hello/{Name}");
            }
        }


        protected void Application_Start()
        {
            new HelloAppHost().Init();

        }
    }
}

……説明書通り。

ただし、Init() メソッドを呼び出すと、例外が発生します。

InvalidDataException: AppHostBase.Instance は既に設定されています

これについてグーグルで検索しても、http: //code.google.com/p/servicestack/source/browse/trunk/Common/ServiceStack.Common/ServiceStack.WebHost.Endpoints/AppHostBase.cs?r のソース コードを除いて、何の助けにもなりません。 =1322

これを見ると、なんとなくインスタンスが設定されています。しかし、どのように?

何が原因でしょうか?

4

2 に答える 2

16

NuGet ServiceStack.Host.Mvcプロジェクトを介してServiceStackをインストールした場合は、次の内部にAppHostクラスが自動的に作成されます。

App_Start/ServiceStackFramework.cs

あなたの例は、あなた自身のAppHostも追加したように見えます。したがって、このAppHostを削除して提供されたものを使用すると、このエラーは発生しなくなります。

于 2012-01-21T17:13:17.610 に答える
3

プロジェクトの名前を変更した後、エラーが発生しました。名前が変更されたプロジェクト dll の古い dll がまだそこにある場合に備えて、必ず bin フォルダーに移動し、すべての dll を削除してください。

于 2014-10-01T14:43:48.313 に答える