1

我在 ServiceStack (3.9) 中托管了一个 API 项目,并且添加了一个 /docs 文件夹,其中包含两个 Razor 文件,_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 页面而不需要重建项目?

4

1 回答 1

3

您需要将AppHost配置设置为debug模式:

SetConfig(new EndpointHostConfig {
    DebugMode = true,
});

出于性能原因,仅在调试模式下监控更改。请参阅此处了解更多信息。

自动重新加载修改后的视图、布局模板和部分(在调试模式下)

避免启动惩罚的最佳方法是首先避免重新启动 AppDomain。因此,在调试模式下,我们还将执行此操作,其中后台文件系统观察程序监视所有页面、部分和布局模板以进行修改并重新编译和自动重新加载它们,一旦请求页面,就可以随时提供即时响应时间.

于 2014-01-16T16:39:58.057 回答