razor - 为什么添加 razorformat 会破坏 servicestack 最新 3.9.45.0 中的 Web 服务

标签 razor http-status-code-404 servicestack

今天我很困惑,为什么在升级到最新的 servicestack 和 servicestack.razor 后,我的 Web 服务中的路由停止工作。所以我做了以下测试。

  1. 在 vs.net 2012 中创建了一个新的空 Web 项目
  2. 添加了来自 rockstar 的 web.config 文件
  3. 通过 nuget 添加了 servicestack 和 razor
  4. 添加了 apphost 和 global.asa
  5. 在我的configure()中我没有添加任何东西——没有插件。
  6. 添加了一个简单的 echoservice 并指定了路由

此时一切正常,我单击路由网址并获取回显结果

  1. 在配置中添加了添加 RazorFormat 插件的行

现在路由不起作用,从带有回显数据的服务返回后,我收到 404(文件未找到)。我可以为该服务创建一个 View ,然后一切都很好,但是默认显示发生了什么?

谢谢 标记

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

  1. 从服务堆栈中获取示例 - RootPath40 + Common 并将它们包含在单独的解决方案中

  2. 编译成功

  3. 示例使用的服务堆栈的当前版本是 3.9.11.0

  4. 运行以下命令来更新服务堆栈并在解决方案中的两个项目上安装 razor 所以我得到最新的 3.9.45

    安装包服务栈

    安装包servicestack.razor

  5. 经过测试 - 工作正常!!!。我正在使用路由 Hello -> 专门测试 Hello 服务 本地主机/RootPath40/hello

在 Global.asax.cs 中添加了 1 行 - 配置功能

public override void Configure(Container container)
        {
            container.Register(new TodoRepository());
            **Plugins.Add(new RazorFormat());**
       }
  1. 现在路由 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;
            ...
            ...

“不”! (感叹号)丢失,但只有在没有 ViewEngine 执行请求时才应返回。我添加了 NOT 和 walla,一切正常。

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

谢谢

标记

关于razor - 为什么添加 razorformat 会破坏 servicestack 最新 3.9.45.0 中的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16618526/

相关文章:

c# - ASP.NET MVC : How do I display multiline text?

ruby-on-rails - 基本 Rails 404 错误页面

redis - The previous queued operation has not been committed 错误在 ServiceStack Redis 客户端

c# - SQLite 在 where 子句中使用整数主键选择查询返回空结果

c# - 在 c# MVC3 Html.ActionLink 中渲染 Bootstrap 下拉菜单

html - 在 MVC 3 中将宽度设置为 Html.BeginForm()

asp.net-mvc - 如何在 MVC 3 Razor 中将列表绑定(bind)为模型上的属性?

java - 如何处理由容器而不是应用程序发送的 404 错误

hadoop - 无法使用水槽流推特数据

c# - ServiceStack Razor 身份验证