gpt4 book ai didi

c# - 在 ServiceStack Razor View 中获取 HttpCompileException(自托管)

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:43 25 4
gpt4 key购买 nike

组装 1

这是我的项目结构(我提供来自嵌入式资源的内容):

Common_Assembly.dll
Css
Common.css
Views
Shared
_Layout.cshtml

这还有一个名为 Model.cs 的类,它本质上只是:

public class Model
{
public string Title {get; set; }
}

_Layout.cshtml

@model MyNameSpace.Model
<html>
<head>
<script language="javascript" href="css/common.css"></script>
<title>@Model.Title</title>
</head>
<body>
@RenderBody
</body>
</html>

组装 2

然后我有第二个程序集(引用上面的程序集)并且是实际托管网络服务的程序集:

Concrete_Assembly.dll
Views
Index.cshtml

它有一个名为 IndexResponse 的类,它派生自另一个程序集中的 Model

public class IndexResponse : Model
{
}

Index.cshtml

@Model MyOtherNameSpace.IndexResponse
<p>Test</p>

现在,问题来了。如果我删除 @Model 行,一切正常,我会在另一个 DLL (I use a custom VirtualPathProvider to locate resources across multiple Dlls) 的布局页面中看到我的索引页面。但是,如果我尝试使用 IndexResponse 作为索引页中的模型,我会得到一个 HttpCompileException。由于它是由外部组件抛出的,所以我实际上并不知道异常消息是什么(我使用服务堆栈二进制文件)。

起初我想知道是不是因为模型类与布局类不同(即使它派生自它)。为了测试该理论,我创建了一个派生自 ModelTestModel 类(放置在通用程序集中),并使用了它 - 它运行良好。

这让我相信这是因为 IndexResponse 在辅助程序集中 - 但不能确定,因为我看不到错误。

如有任何帮助,我们将不胜感激!

编辑

为完整起见,这里是实际的 WebService 方法。我不认为这里有任何问题,因为当我进行其他测试时它运行良好(改为使用 TestModel)。

    public IndexResponse Any(Index index)
{
return new IndexResponse() { Title = "Test Title" };
} // eo Any

编辑 2

为所有的编辑道歉。此外,无论如何我可以掌握或处理此异常以便查看错误吗?捕获它并显示它会很好 - 否则将这些页面开发为嵌入式资源就像拔牙一样:)

编辑 3

在遵循 Mythz 的一些建议并将正确的命名空间添加到 Razornamespaces 配置之后,我终于解决了它抛出的错误:

+ $exception {"(0): error CS1704: 已导入具有相同简单名称 'Concrete_Assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 的程序集。尝试删除其中一个引用或对它们进行签名以并排启用。”} System.Exception {System.Web.HttpCompileException}`

最佳答案

如果您还没有,您应该将您正在使用的任何程序集添加到您的 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="ServiceStack.Html" />
<add namespace="ServiceStack.Razor" />
<add namespace="ServiceStack.Text" />
<add namespace="ServiceStack.OrmLite" />
<add namespace="Concrete_Assembly" />
<add namespace="Common_Assembly" />
</namespaces>
</pages>
</system.web.webPages.razor>

同时禁用 ASP.NET 网页:

<appSettings>
<add key="webPages:Enabled" value="false" />
</appSettings>

参见 RazorRockstars Self Host app.config供引用。

关于c# - 在 ServiceStack Razor View 中获取 HttpCompileException(自托管),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17544939/

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