【问题标题】:Razor.ServiceStack - Views not rendering, just default "Snapshot"Razor.ServiceStack - 视图不渲染,只是默认的“快照”
【发布时间】:2012-11-17 02:58:34
【问题描述】:

我已经使用http://razor.servicestack.net/ 设置了一个站点。

我创建了几个视图和匹配服务,示例如下:

服务示例:

using ServiceStack.ServiceHost;
using ServiceStack.ServiceInterface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace website
{
    [DefaultView("AboutUs")]
    public class AboutUsService : Service
    {
        public object Get(AboutUsRequest request)
        {
            return new AboutUsResponse
            {
                //any properties that need to be set on the response object can be done inline here
            };
        }     
    }

    [Route("/About-Us")]
    public class AboutUsRequest
    {
        //any request parameters we need can be provided here.  They should be auto parsed from the request
    }

    public class AboutUsResponse
    {
        //any response properties we want to use in the view can be defined here     
    }

}

查看示例(位于 /Views/AboutUs.cshtml)

 @inherits ServiceStack.Razor.ViewPage<website.AboutUsResponse>
 <html><body><h1>About Us</h1></body></html>

这在 Windows 上加载正常,但在 Mono/NginxFastCGI 上加载失败,而是只显示默认的 API 快照页面:

Snapshot of AboutUsRequest generated by ServiceStack on 11/17/2012 02:30:14
view json datasource from original url: http://dev.mydomain.com:80/About-Us? in other formats: json xml csv jsv

我需要配置一些特定的更改才能在 Mono/Linux 端工作吗?顺便说一句,我已经打开了 IOMAP=all。

任何关于如何使这项工作的想法将不胜感激!

【问题讨论】:

    标签: razor mono nginx servicestack


    【解决方案1】:

    很遗憾,您遗漏了最重要的部分:Razor 视图的名称和位置。

    当 ServiceStack 找不到它正在寻找的视图时,Snaphot 页面是一个备用页面,在这种情况下,由于您已指定 [DefaultView("AboutUs")],ServiceStack 将寻找名为“AboutUs.cshtml”的视图" 在 /Views/ 目录中,这就是你所拥有的吗?

    【讨论】:

    • 神话,感谢您的关注。是的,我已经用视图的路径更新了问题,即:/Views/AboutUs.cshtml
    • 看起来 IOMAP 是导致问题的原因,但是这对我来说在 MVC3 上运行良好。您能解释一下为什么 IOMAP 会导致这些问题吗?谢谢!
    • 不知道,直到我查了才知道 IOMAP 是什么。 Tho ServiceStack 包含自己的路径规范化功能,因此您不需要启用 IOMAP。
    • 我认为如果您遇到无法找到视图的问题,请进一步研究,并在 razor.servicestack 网站上添加关于禁用 MONO_IOMAP (mono-project.com/IOMap) 的说明使用服务堆栈时。我刚刚确认设置 MONO_IOMAP=all 并在 ALLOWED_ENV 列表中允许该变量(我使用 spawn-fcgi)确实是问题所在,但重新启用它以进行测试。
    • 我是 stackoverflow 的半新手,所以不知道如何处理这个问题,但我会感谢你的答案,因为你的回复让我找到了答案。干杯。 :)
    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    相关资源
    最近更新 更多