servicestack,Razor,Http Status Code 404,servicestack" /> servicestack,Razor,Http Status Code 404,servicestack" />

为什么添加razorformat会破坏servicestack最新版本3.9.45.0中的web服务

为什么添加razorformat会破坏servicestack最新版本3.9.45.0中的web服务,razor,http-status-code-404,servicestack,Razor,Http Status Code 404,servicestack,为什么升级到最新的servicestack和servicestack.razor后,我在web服务中的路由停止工作,今天我真是伤脑筋。所以我做了下面的测试 在vs.net 2012中创建了一个新的空web项目 从rockstar添加了web.config文件 通过nuget添加了servicestack和razor 添加了apphost和global.asa 在我的configure()中,我没有添加任何东西-没有插件 添加了指定路由的简单echoservice 此时一切正常,我单击路由url并

为什么升级到最新的servicestack和servicestack.razor后,我在web服务中的路由停止工作,今天我真是伤脑筋。所以我做了下面的测试

  • 在vs.net 2012中创建了一个新的空web项目
  • 从rockstar添加了web.config文件
  • 通过nuget添加了servicestack和razor
  • 添加了apphost和global.asa
  • 在我的configure()中,我没有添加任何东西-没有插件
  • 添加了指定路由的简单echoservice
  • 此时一切正常,我单击路由url并返回回显结果

  • 将该行添加到config以添加RazorFormat插件
  • 现在路由不起作用了,我从服务返回后得到404(未找到文件)和echo数据。我可以为该服务创建一个视图,然后一切正常,但默认显示发生了什么

    谢谢 标记

    我尝试对servicestack开箱即用的示例执行相同的操作,并得到相同的结果

  • 从servicestack–RootPath40+Common中获取一个示例,并将其包含在单独的解决方案中

  • 编译并运行

  • 示例使用的servicestack的当前版本是3.9.11.0

  • 在解决方案中的两个项目上运行以下命令以更新servicestack并安装razor 所以我得到了最新的3.9.45

    安装软件包servicestack

    安装servicestack.razor软件包

  • 经过测试–工作正常!!!。我正在使用Hello->route专门测试Hello服务 localhost/RootPath40/hello

  • 在Global.asax.cs中添加了一行–配置功能

    public override void Configure(Container container)
            {
                container.Register(new TodoRepository());
                **Plugins.Add(new RazorFormat());**
           }
    
  • 现在路由hello不再工作,因为我得到错误404 not found
  • 我正在使用vs.net 2012和windows 8

    我相信我错过了一些非常琐碎的事情,任何人都知道

    谢谢

    经过一段时间的努力,我发现如果我添加对System.Web.Razor.Unofficial.dll的引用,那么Razor页面会被提供,但是路由的Web服务会停止工作,在我删除引用的那一刻,Web服务路由url就可以了,但是Razor页面不会被提供


    我错过了什么?

    我终于找到了问题所在。 新版本的servicestack(3.9.45.0)在IF条件下似乎存在错误

    在HtmlFormat.cs中

    public void SerializeToStream(IRequestContext requestContext, object response, IHttpResponse httpRes)
            {
                var httpReq = requestContext.Get<IHttpRequest>();
                if (httpReq != null && AppHost.ViewEngines.Any(x => x.ProcessRequest(httpReq, httpRes, response))) return;
                ...
                ...
    
    谢谢


    Mark

    这是一个带有新Razor支持的bug,已在v3.9.46+中修复

      if (httpReq != null && **!**AppHost.ViewEngines.Any(x => x.ProcessRequest(httpReq, httpRes, response))) return;