2013-08-02 13 views
6

Kendimi iyi bir şekilde barındıran sayfalarda Razor Viewpages uygulamasını başarıyla uygulayabildim, sayfalar 3.9.56 olarak güncelledim. Görünümler, bir windows form uygulamasında, hizmetten json yanıtlarını tüketecek bir Windows Forms istemcisiyle birlikte test edildi. Bu hala mükemmel çalışıyor, ama şimdi Jilet Görüntüleme sınamak zaman bir sayfa isterken aşağıdaki özel durum almaya devam: 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?)ServiceStack Razor Views derleme değil

Ben hizmet ve Jilet Görüntüleme ve sayfalarınızı barındırmak için küçük bir konsol uygulaması inşa doğru şekilde oluştur. Her iki proje de test çerçevesindeki Windows Forms derleme referansları için aynı referanslara sahiptir. Her iki proje de AppHost'u aynı yönetim sınıfından ayrı bir mecliste başlatır ve tüm Görüşler yayınlanmıştır.

Yapılandırma dosyasındaki tek fark, Windows Forms test çerçevesinde bir <userSettings> bölümüdür.

[Düzenle]

Ben @inherits ViewPage beklendiği gibi ServiceStack.Razor.ViewPage her şey çalışıyor @inherits değiştirmek

+0

Lütfen bir kod sağlayın. Açıklamanız, ayrıntılı olmamasına rağmen yardımcı olmuyor. Hata mesajı ile kod kesinlikle yardımcı olacaktır. – kunjee

+0

Hata mesajı var. Malesef ne yazık ki paylaşamam. – cornelha

+0

bir şansa sahip olduğum anda problemi yakından andıran ServiceStack kullanarak bir örnek oluşturmaya çalışacağım örnek bir kod kesinlikle yardımcı olacaktır. Sadece hata mesajı ile sorunu çözmek için imkansız olduğunu yanında – kunjee

cevap

6

Bu sorun beni deli oldu. Sadece çözüm bulundu:

<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> 

Bunların hepsi Tıraş şablonları için varsayılan ad alanı ithalatı şunlardır: ServiceStack.Razor başvurunun app.config gibi bir bölüm içeriyor. Uygulama, uygulamada olduğu gibi ayrı bir DLL'de olduğunda ortaya çıkıyor, örneğiniz de öyle görünüyor. MyApp referansı verilen MyApp.Host adlı bir konsol uygulaması projeniz olduğunu varsayalım. MyApp.Host.exe.config'daki varsayılan ithalatı bulmak yerine, ServiceStack bunları AppHost içeren DLL dosyasının yapılandırma dosyasında arar, bu durumda MyApp.dll.config. Sorun şu ki, bu yapılandırma dosyası bina sırasında otomatik olarak MyApp.Host'un bin klasörüne kopyalanmıyor.

çözüm oldukça basit: (Getting a HttpCompileException in ServiceStack Razor view (Self hosted) bakınız) programatik olarak da ithalat ekleyebilirsiniz::

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

Edit: MyApp.Host sonrası inşa olaylara aşağıdakine benzer bir şeyler ekleyin

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

Evet, tam olarak benim durumumdur. Görünümlerim ve AppHostHttpListenerBase başka bir mecliste. Montajı bir Windows Forms uygulamasında, bir serviste ve bir konsol uygulamasında kullanıyorum. Bu tüm sorunlarımı çözdü, teşekkürler. – cornelha