我在ServiceStack(3.9)中托管了一个API项目,我添加了一个包含两个Razor文件的/ docs文件夹,_layout.cshtml
和default.cshtml
我没有配置缓存;我的AppHost类看起来像这样:
public class AppHost : AppHostBase {
public AppHost()
: base("My API", typeof(UserService).Assembly, typeof(GetUserDto).Assembly) {
}
public override void Configure(Container container) {
ServiceExceptionHandler +=
(req, request, exception) => {
Elmah.ErrorSignal.FromCurrentContext().Raise(exception);
return DtoUtils.HandleException(this, request, exception);
};
JsConfig.EmitCamelCaseNames = true;
Plugins.Add(new RazorFormat());
Plugins.Add(new SwaggerFeature());
}
public static void Start() {
new AppHost().Init();
}
}
我的Razor页面工作正常 - 转到localhost / api / docs显示默认页面并使用提供的布局 - 但如果我对Razor代码进行了更改,我需要重新编译应用程序,然后才能在浏览器中看到它
我的理解是ServiceStack视图就像ASP.NET MVC视图一样 - 它们在请求时被解释,并且对视图代码的任何更改都会立即显示,如果要缓存渲染的视图,则需要明确配置。我是否错过了配置设置,或者我需要做些什么才能重新编译ServiceStack页面而无需重建项目?
答案 0 :(得分:3)
您需要将AppHost
配置设置为debug
模式:
SetConfig(new EndpointHostConfig {
DebugMode = true,
});
出于性能原因,仅在调试模式下监视更改。 See here了解更多信息。
自动重新加载修改后的视图,布局模板和部分(在调试模式下)
避免启动惩罚的最佳方法是避免首先重启AppDomain。因此,在调试模式下,我们还将执行此操作,其中后台文件系统观察程序监视所有页面,部分和布局模板以进行修改和重新编译,并在运行时自动重新加载它们,一旦请求页面,就可以立即响应即时响应时间