我正在尝试添加自定义命名空间,以便在.cshtml Razor文件中,我不需要每次都使用我的模型。所以我有这样的事情:
<system.web.webPages.razor>
<pages pageBaseType="ServiceStack.Razor.ViewPage">
<namespaces>
<!-- other entries -->
<!--works-->
<add namespace="Libdll" />
<!-- exception for each -->
<add namespace="Libdll.Customnamespace1" />
<add namespace="Libdll.Customnamespace2" />
<add namespace="Libdll.Customnamespace2.Subnamespace" />
</namespaces>
</pages>
<!-- other data -->
</system.web.webPages.razor>
一切似乎都运行良好......唯一的问题是在网站启动期间,我在Global.asax的这一行得到例外:
protected void Application_Start(object sender, EventArgs e)
{
new MyAppHost().Init(); // exception thrown here
}
例外是:
无法加载文件或程序集&#39; Libdll.Customnamespace1&#39;或其中一个 依赖。系统找不到指定的文件。
是的,我的命名空间是名为Libdll的DLL中的Libdll.Customnamespace1。如果我只使用Libdll作为命名空间,那就行了。
那么,我在web.config中缺少一些配置设置吗?或者这是与ServiceStack相关的具体问题?
答案 0 :(得分:1)
上面的Razor配置允许您定义Razor页面中包含的C#名称空间。
默认情况下,ServiceStack的Razor会自动引用所有已加载的程序集,如果找不到它,则意味着它尚未加载,您应该可以通过在您的主机项目中引用它,例如:
var loadType = typeof(Libdll.Customnamespace.CustomType);
"Assembly {0} was loaded..".Print(loadType.Assembly.FullName);