为什么在重建我的应用程序之前,我的ServiceStack.Razor页面没有刷新?

时间:2014-01-16 13:20:25

标签: razor servicestack servicestack-bsd servicestack-razor

我在ServiceStack(3.9)中托管了一个API项目,我添加了一个包含两个Razor文件的/ docs文件夹,_layout.cshtmldefault.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页面而无需重建项目?

1 个答案:

答案 0 :(得分:3)

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

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

出于性能原因,仅在调试模式下监视更改。 See here了解更多信息。

  

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

     

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