ServiceStack SelfHosted站点默认页面

时间:2013-05-15 15:32:35

标签: servicestack

我已经尝试了所有Razor自托管和servicestack模板,在这些项目中,如果你安装了razorFormat,可以提供静态html和cshtml。我不知道我做错了什么,我刚刚将代码复制到新的解决方案中,我无法得到html响应。我总是可以获得元数据页面并且服务可以正常工作。我无法添加default.htm并让它工作 如果我输入http://localhost:1337,我应该被定向到默认页面。也许我错过了一些东西,但我不知道它是什么。如果有人能帮助我,我会非常感激!

这是我的default.htm

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
        <title></title>
    </head>
    <body>
    SOMETEXT
    </body>
</html>

这是我的程序

class Program
    {
        [Route("/hello")]
        [Route("/hello/{Name}")]
        public class Hello
        {
            public string Name { get; set; }
        }

        public class HelloResponse
        {
            public string Result { get; set; }
        }

        public class HelloService : Service
        {
            public object Any(Hello request)
            {
                return new HelloResponse { Result = "Hello, " + request.Name };
            }
        }

        public class AppHost : AppHostHttpListenerBase {
            public AppHost() : base("StarterTemplate HttpListener",                             typeof(HelloService).Assembly) {
            }

            public override void Configure(Funq.Container container) {
                container.Register(new HelloService());
            }    
        }

        static void Main(string[] args)
        {
            var listeningOn = args.Length == 0 ? "http://*:1337/" : args[0];
            var appHost = new AppHost();
            appHost.Init();
            appHost.Start(listeningOn);

            Console.WriteLine("AppHost Created at {0}, listening on {1}", DateTime.Now, listeningOn);
            Console.ReadKey();
        }
    }

编辑: 我应该补充一下我得到的回应。

Handler for Request not found: 


Request.HttpMethod: GET
Request.HttpMethod: GET
Request.PathInfo: /default.htm
Request.QueryString: 
Request.RawUrl: /default.htm

我尝试的另一件事是在AppHostHttpListenerBase.Configure中放置一个请求过滤器。我甚至没有在我的项目中遇到过这个问题,但我在模板项目中做过。

编辑: 我发现问题是我的Default.html和app.Config文件没有被移动到bin / Debug目录。有没有人遇到过这个问题?

2 个答案:

答案 0 :(得分:1)

Here is a good blog post为自托管/控制台应用提供Razor页面服务。我认为你不需要app.config或web.config文件,但我可能错了。

我认为你错过了两件事:

1)将Plugins.Add(new RazorFormat())添加到AppHost中的Configure方法中 2)将Razor文件的“Copy to Output Directory”值更改为“Copy if newer”(这在文件的Properties设置中)。另外,将default.htm文件更改为default.cshtml

答案 1 :(得分:0)

对于OS X中的xamarin&#39;复制到输出目录&#39;肯定是痛苦的屁股,因为你应该在每个文件上选择这个选项,有时两次。所以另一种选择是创建符号链接

ln -s /path_to_project/assets /path_to_project/bin/Debug/assets 
ln -s /path_to_project/Views /path_to_project/bin/Debug/Views 

它对资产中的数百个文件非常有用,而且对于Views文件夹来说更容易一些。

在Linux主机上也可以这样做,以隐藏bin文件夹中的selfhost.exe和* .dll