gpt4 book ai didi

c# - ServiceStack Razor View 未编译

转载 作者:太空狗 更新时间:2023-10-29 21:39:54 24 4
gpt4 key购买 nike

我已经在自托管服务中成功实现了 Razor Viewpages,在我更新到 3.9.56 之前,页面呈现完美。这些 View 在一个 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 View ,并正确呈现页面。这两个项目具有相同的引用,但测试框架上的 Windows 窗体程序集引用除外。这两个项目都从单独程序集中的同一管理类启动 AppHost,并且所有 View 都已发布。

配置文件中的唯一区别是 <userSettings> Windows 窗体测试框架部分。

[编辑]

当我将@inherits ViewPage 更改为@inherits ServiceStack.Razor.ViewPage 时,一切都按预期工作

最佳答案

这个问题快把我逼疯了。我刚刚找到解决方案:ServiceStack.Razor 应用程序的 app.config 包含如下部分:

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

这些是所有 Razor 模板的默认命名空间导入。当应用程序位于单独的 DLL 中时会出现问题,就像您的示例一样。假设您有一个名为 MyApp.Host 的控制台应用程序项目,它引用了 MyApp。 ServiceStack 不是在 MyApp.Host.exe.config 中查找默认导入,而是在包含 AppHost 的 DLL 的配置文件中查找它们,在本例中为 MyApp.dll.config 。问题是,此配置文件在构建时不会自动复制到 MyApp.Host 的 bin 文件夹中。

解决方法比较简单:在MyApp.Host的构建后事件中添加类似下面的内容:

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

编辑:您还可以通过编程方式添加导入(请参阅 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",
});

关于c# - ServiceStack Razor View 未编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18010199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com