2013-08-02 28 views
6

Tôi đã triển khai thành công Razor Viewpages trong dịch vụ tự lưu trữ, các trang được hiển thị hoàn hảo cho đến khi tôi cập nhật thành 3.9.56. Các khung nhìn đã được thử nghiệm trong một ứng dụng biểu mẫu windows cùng với một máy khách Windows Forms có thể sử dụng các phản hồi json từ dịch vụ. Điều này vẫn hoạt động hoàn hảo, nhưng bây giờ khi tôi kiểm tra xem Razor tôi tiếp tục nhận được ngoại lệ sau khi yêu cầu một trang:ServiceStack Razor Views không biên dịch

ERROR: Error occured while Processing Request: [HttpCompileException] c:\Users\Cornel\AppData\Local\Temp\2msjdedu.0.cs(24): error CS0246: The type or namespace name 'ViewPage' could not be found (are you missing a using directive or an assembly reference?), Exception: c:\Users\Cornel\AppData\Local\Temp\2msjdedu.0.cs(24): error CS0246: The type or namespace name 'ViewPage' could not be found (are you missing a using directive or an assembly reference?)

tôi đã xây dựng một ứng dụng giao diện điều khiển nhỏ để lưu trữ các dịch vụ và Views Razor và các trang hiển thị chính xác. Cả hai dự án đều có cùng tham chiếu, exept cho các tham chiếu assembly của Windows Forms trên khung kiểm thử. Cả hai dự án đều khởi động AppHost từ cùng một lớp quản lý trong một hội đồng riêng biệt và tất cả các khung nhìn đã được xuất bản.

Sự khác biệt duy nhất trong tệp cấu hình là phần <userSettings> trên khung kiểm tra Biểu mẫu Windows.

[Chỉnh sửa]

Khi tôi thay đổi @inherits ViewPage để @inherits ServiceStack.Razor.ViewPage mọi thứ hoạt động như mong đợi

+0

bạn có thể vui lòng cung cấp một số mã không. Lời giải thích của bạn mặc dù nó không được chi tiết. Mã với thông báo lỗi chắc chắn sẽ giúp ích. – kunjee

+0

Có thông báo lỗi. Mã tôi tiếc là không thể chia sẻ. Tôi sẽ cố gắng và xây dựng một mẫu sử dụng ServiceStack mà sẽ gần giống với vấn đề ngay sau khi tôi có một cơ hội – cornelha

+0

một mã mẫu chắc chắn sẽ giúp. Chỉ bởi thông báo lỗi nó là bên cạnh không thể giải quyết vấn đề – kunjee

Trả lời

6

Vấn đề này đã lái xe cho tôi điên. Tôi chỉ tìm thấy các giải pháp: Các app.config của ứng dụng ServiceStack.Razor chứa một phần như thế này:

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="ServiceStack.Razor.ViewPage"> 
     <namespaces> 
     <add namespace="System.Linq" /> 
     <add namespace="ServiceStack.Html" /> 
     <add namespace="ServiceStack.Razor" /> 
     <add namespace="ServiceStack.Text" /> 
     <add namespace="ServiceStack.OrmLite" /> 
     <add namespace="MyApp" /> 
     <add namespace="MyApp.Services" /> 
    </namespaces> 
    </pages> 
</system.web.webPages.razor> 

Đây là hàng nhập khẩu không gian tên mặc định cho tất cả các mẫu Razor. Vấn đề xảy ra khi ứng dụng nằm trong một DLL riêng biệt, giống như nó có vẻ là trường hợp với ví dụ của bạn quá. Giả sử bạn có dự án ứng dụng bảng điều khiển có tên là MyApp.Host, tham chiếu MyApp. Thay vì tìm kiếm nhập mặc định trong MyApp.Host.exe.config, ServiceStack tìm kiếm chúng trong tệp cấu hình của DLL chứa AppHost, trong trường hợp này là MyApp.dll.config. Vấn đề là, tập tin cấu hình này không được tự động sao chép vào thư mục bin của MyApp.Host khi xây dựng.

Các giải pháp tương đối đơn giản: Thêm một cái gì đó tương tự như sau để các bài xây dựng các sự kiện của MyApp.Host:

copy /y $(SolutionDir)MyApp\app.config $(TargetDir)MyApp.dll.config 

Edit: Bạn cũng có thể thêm các hàng nhập khẩu theo chương trình (xem Getting a HttpCompileException in ServiceStack Razor view (Self hosted)):

EndpointHostConfig.RazorNamespaces.Add("ServiceStack.Razor"); 
EndpointHostConfig.RazorNamespaces.Add("MyApp"); 
EndpointHostConfig.RazorNamespaces.Add("MyApp.Services"); 
SetConfig(new EndpointHostConfig 
{ 
    DefaultRedirectPath = "/Home", 
}); 
+0

Vâng, đó là chính xác tình hình của tôi. My Views và AppHostHttpListenerBase nằm trong một hội đồng khác. Tôi sử dụng assembly trong ứng dụng Windows Forms, một dịch vụ và một ứng dụng giao diện điều khiển. Điều này giải quyết tất cả các vấn đề của tôi, cảm ơn bạn. – cornelha

Các vấn đề liên quan