2012-01-21 7 views
9

Tôi đang cố gắng triển khai ServiceStack vào dự án MVC3 của mình và đang thực hiện theo hướng dẫn tại: http://www.servicestack.net/ServiceStack.Hello/Service Stack/MVC: Lỗi "AppHostBase.Instance đã được đặt" - nhưng không thể hiểu tại sao/cách ngăn chặn

My Global.asax.cs bây giờ trông giống như:

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(); 

     } 
    } 
} 

... theo hướng dẫn.

Tuy nhiên, khi tôi gọi phương thức Init(), tôi nhận được ngoại lệ:

InvalidDataException: AppHostBase.Instance đã được thiết

Googling xung quanh cho điều này không cung cấp sự giúp đỡ, trừ mã nguồn tại http://code.google.com/p/servicestack/source/browse/trunk/Common/ServiceStack.Common/ServiceStack.WebHost.Endpoints/AppHostBase.cs?r=1322

Nhìn vào điều này, bằng cách nào đó, Instance đang được thiết lập. Nhưng bằng cách nào?

Điều gì có thể gây ra điều này?

Trả lời

16

Nếu bạn đã cài đặt ServiceStack qua dự án NuGet ServiceStack.Host.Mvc nó tự động tạo ra các lớp AppHost cho bạn bên trong:

App_Start/ServiceStackFramework.cs 

dụ của bạn có vẻ như bạn có thể thêm AppHost của riêng bạn là tốt. Vì vậy, nếu bạn loại bỏ AppHost này và sử dụng một trong những cung cấp, bạn sẽ không còn có lỗi này.

+0

Trong phiên bản của tôi, tệp vẫn nằm trong thư mục App_Start, nhưng nó đã được đổi tên thành AppHost.cs. Tôi đã làm theo hướng dẫn ở đây: https://github.com/ServiceStack/ServiceStack/wiki/Create-your-first-webservice – rball

+0

Tôi có cùng một vấn đề ngay bây giờ. Không có tệp bổ sung nào ở bất kỳ đâu. Tôi tìm App_Start/ServiceStackFramework.cs ở đâu. Tôi đã thực hiện nó chính xác như nó đã được trên hướng dẫn. Tôi vừa cập nhật Xamarin Studio và sử dụng công cụ NuGet để cập nhật các gói. Sau đó, nó ngừng làm việc trên ngăn xếp mono của chúng tôi, hoạt động tốt trên máy tính cửa sổ của tôi. –

2

Lỗi xảy ra với tôi sau khi tôi đổi tên dự án của mình. Hãy chắc chắn rằng bạn đi vào thư mục bin của bạn và xóa tất cả các dlls, trong trường hợp cũ từ các dự án được đặt tên lại dlls vẫn còn ở đó!