cor*_*lha 6 c# rest razor servicestack
我已经在自主服务中成功实现了Razor Viewpages,这些页面完美呈现,直到我更新到3.9.56.视图在Windows窗体应用程序中与Windows窗体客户端一起进行测试,该窗体客户端将使用来自服务的json响应.这仍然可以正常工作,但是现在当我测试Razor Views时,我在请求页面时不断收到以下异常:
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?)
我构建了一个小型控制台应用程序来托管服务,并且Razor Views和页面正确呈现.两个项目都具有相同的引用,对测试框架上的Windows窗体程序集引用有效.两个项目都在一个单独的程序集中从同一个管理类启动AppHost,并且所有视图都已发布.
配置文件的唯一区别是<userSettings>Windows窗体测试框架上的一节.
[编辑]
当我将@inherits ViewPage更改为@inherits ServiceStack.Razor.ViewPage时,一切都按预期工作
这个问题让我抓狂.我刚刚找到了解决方案:app.configServiceStack.Razor应用程序包含这样的部分:
<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>
Run Code Online (Sandbox Code Playgroud)
这些是所有Razor模板的默认命名空间导入.当应用程序位于单独的DLL中时会出现问题,就像您的示例似乎也是如此.假设您有一个名为的控制台应用程序项目MyApp.Host,该项目引用MyApp.在这种情况下MyApp.Host.exe.config,ServiceStack不会查找默认导入,而是在包含AppHost的DLL的配置文件中查找它们MyApp.dll.config.问题是,此配置文件不会自动复制到MyApp.Host构建时的bin文件夹中.
解决方案相对简单:在以下的后期构建事件中添加类似于以下内容的内容MyApp.Host:
copy /y $(SolutionDir)MyApp\app.config $(TargetDir)MyApp.dll.config
Run Code Online (Sandbox Code Playgroud)
编辑:您还可以以编程方式添加导入(请参阅在ServiceStack Razor视图中获取HttpCompileException(自托管)):
EndpointHostConfig.RazorNamespaces.Add("ServiceStack.Razor");
EndpointHostConfig.RazorNamespaces.Add("MyApp");
EndpointHostConfig.RazorNamespaces.Add("MyApp.Services");
SetConfig(new EndpointHostConfig
{
DefaultRedirectPath = "/Home",
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1420 次 |
| 最近记录: |