标签: nancy

Nancy Self使用Razor视图主持空白响应

南希0.6决议


我正试图让自己主持的南希回归剃刀观点,我无法让它发挥作用.南希源代码中的示例使用Web项目,但他们所拥有页面并未说明这是必需的.我已经尝试指定配置部分,但他们又说" 这一步是完全可选的 "(斜体是他们的).通过源跟踪它看起来不像razor是一个有效的视图引擎,但我没有看到我可以在配置或我自己的NancyModule中添加它...任何帮助将不胜感激.

查看引擎

当我最终发现他们正在查看views文件夹时,似乎cshtml是受支持的扩展,但是DefaultViewFactory没有它与视图引擎关联,所以我得到null:

在此输入图像描述

我的代码:

public Module1()
{
    Get["/me"] = parms =>
    {
        return View["Static.html"]; // WORKS!
    };
    Get["/you"] = parms =>
    {
        dynamic model = new ExpandoObject();
        //return View["~/Static.cshtml", model];
        //return View["/Static.cshtml", model];
        return View["Static.cshtml", model]; // blank page, no error or anything
    };
}
Run Code Online (Sandbox Code Playgroud)

Static.cshtml只是一个html页面,上面写着"Hello,world!"

c# razor nancy

16
推荐指数
2
解决办法
4179
查看次数

远程访问南希自我主机

我正在创建一个最终将在Windows服务中托管的Nancy模块.我目前正在WPF测试应用程序中运行它.为了开始Nancy托管,我正在使用Nancy.Hosting.Self并致电:

nancyHost = new Nancy.Hosting.Self.NancyHost(new Uri("http://localhost:8080"));
nancyHost.Start();
Run Code Online (Sandbox Code Playgroud)

在我的本地计算机上,我可以通过在地址栏中输入http:// localhost:8080来访问Web浏览器并访问我的模块.

如果我去另一台机器,我无法访问该服务.我的Windows防火墙已关闭.

如果我在baseUri中使用localhost以外的任何东西启动托管,则在调用nancyHost.Start()时会出现"拒绝访问"异常;

有什么东西我错过了吗?我是否能够从任何机器访问Nancy模块,只要我知道IP:进行托管的机器的端口?是否有任何类型的"主机标题"我需要注意?

感谢您对此的帮助.

nancy

15
推荐指数
1
解决办法
5589
查看次数

NancyFX Catch所有路线

NancyFX是否支持像"Catch All"路由的ASP.NET MVC?我需要一个,基本匹配每个URL.这对于构建单页应用程序非常方便.

那可能吗?

url-routing nancy single-page-application

15
推荐指数
3
解决办法
4608
查看次数

南希:有没有Server.MapPath("〜/")等价?

我似乎无法在Nancy框架中的System.Web.HttpContext.Current.Server.MapPath()中找到Nancy中的等价物.

我只想加载相对于应用程序服务的文本文件.

我在集会中看到了这一点

using Nancy;
using System;

namespace Nancy.Hosting.Self
{
    public class FileSystemRootPathProvider : IRootPathProvider, IHideObjectMembers
    {
        public FileSystemRootPathProvider();

        public string GetRootPath();
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何使用.

更新:我只是想出了我需要加载的任何东西都可以从bin/relase /目录中读取/写入.这是在Nancy Self Hosting环境中做到的假设方式吗?我想那是有道理的.

c# hosting path nancy

14
推荐指数
1
解决办法
2408
查看次数

南希:从"/"提供静态内容(例如index.html)?

我正在尝试使用Nancy制作单页Web应用程序.因此,我希望我的根URL提供一个普通的.html文件,没有任何视图逻辑或任何东西.

我试过了

Get["/"] = parameters => Response.AsHtml("content/index.html")
Run Code Online (Sandbox Code Playgroud)

但是没有AsHtml.

我试过一个自定义引导程序

conventions.StaticContentsConventions.Add(
    StaticContentConventionBuilder.AddFile("/", @"content/index.html")
);
Run Code Online (Sandbox Code Playgroud)

但显然它认为"/"不是一个文件 - 南希给了我一个目录列表http://localhost:<port>/.

我该怎么办?这应该不是这么难,对吧?

PS.任何方式关闭该目录列表?感觉不安全.

c# nancy

13
推荐指数
2
解决办法
1万
查看次数

原始请求正文内容

我正在开发Nancy Web服务,它将从客户端收集数据,这些数据将发送这样的HTTP请求

POST /iclock/cdata?SN=3163602360001&table=OPERLOG&OpStamp=426433018 HTTP/1.1
Host: 218.108.223.49:9001
User-Agent: iClock Proxy/1.09
Connection: close
Content-Length: 4883
Accept: */*

OPLOG 0\tab 0\tab 2012-09-07 11:36:39\tab 0\tab 0\tab 0\tab 0
OPLOG 3\tab 0\tab 2012-09-07 11:36:42\tab 55\tab 0\tab 0\tab 0
Run Code Online (Sandbox Code Playgroud)

问题是,我找不到在Nancy模块中收集这些数据的方法.有没有办法在Nancy模块中获取原始请求正文内容?

nancy

13
推荐指数
2
解决办法
7404
查看次数

模型绑定POST与NancyFx中的对象数组

我有一个具有以下结构的json对象

{
 ContainerType: "Box",
 Items : [{Name: "Coin", Amount: 5}, {Name: "Spyglas", Amount : 1}]   
}
Run Code Online (Sandbox Code Playgroud)

该对象在Nancy后端系统中有一个表示:

public string ContainerType {get; set}
public IEnumberable<Item> Items {get; set}
Run Code Online (Sandbox Code Playgroud)

其中Item(如预期)是一个非常简单的公共属性对象:

public string Name {get; set;}
public double Amount {get; set;}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我在我的模块中收到Post(基于NancyModule)时,只有字符串属性被绑定在这行代码中:

var model = this.databind<MyContainerModel>();
Run Code Online (Sandbox Code Playgroud)

我已尝试将列表类型更改为更具体(List <MyContainerModel>),更改为Arrays(MyContainerModel []),但似乎没有任何效果.

Nancy的git-repo演示部分中的数据绑定示例仅涉及整数的反序列化,但我的问题是使用javascript对象对数组进行反序列化.

有任何想法吗?

谢谢!

data-binding post json deserialization nancy

12
推荐指数
1
解决办法
6197
查看次数

为什么没有查询参数传递给我的NancyFX模块?

我正在我的应用程序中运行一个自托管的NancyFX Web服务器.现在我有一个托管的模块:

public class MetricsModule : NancyModule
{
    private IStorageEngine _storageEngine;

    public MetricsModule(IStorageEngine storageEngine) : base("/metrics")
    {
        _storageEngine = storageEngine;

        Get["/list"] = parameters =>
        {
            var metrics = _storageEngine.GetKnownMetrics();
            return Response.AsJson(metrics.ToArray());
        };

        Get["/query"] = parameters =>
        {
            var rawStart = parameters.start;
            var rawEnd = parameters.end;
            var metrics = parameters.metrics;

            return Response.AsJson(0);
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

我的Bootstrapper类是:

public class OverlookBootStrapper : DefaultNancyBootstrapper
{
    private readonly IStorageEngine _storageEngine;

    public OverlookBootStrapper(IStorageEngine storageEngine)
    {
        _storageEngine = storageEngine;
    }

    protected override void ConfigureApplicationContainer(TinyIoCContainer container)
    {
        container.Register(_storageEngine); …
Run Code Online (Sandbox Code Playgroud)

c# nancy

12
推荐指数
1
解决办法
9995
查看次数

NancyFX立即反映静态内容的变化

在ASP.NET中,每当我在VS2012中以调试模式运行服务器时,我对静态内容(js,css等)所做的任何更改都会在保存后立即反映出来.

在NancyFX中,我每次更改静态内容时都需要重新启动服务器.我假设这是因为VS每次运行服务器时都需要将静态内容复制到输出目录.

无论如何反映保存后立即对静态内容所做的更改?

这是我对静态内容的配置

public class MainBootstrapper : DefaultNancyBootstrapper
{
    protected override void ConfigureConventions(NancyConventions nancyConventions)
    {
        nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("Scripts"));
        base.ConfigureConventions(nancyConventions);
    }
}
Run Code Online (Sandbox Code Playgroud)

这也许是相关的.我在一个控制台应用程序下运行它,其中nancyfx主循环编写如下:

class Program
{
    const ushort port = 64402;
    const string escapeString = "/Terminate";

    static void Main(string[] args)
    {
        NancyHost host;

        #region Making new instance of NancyHost
        var uri = new Uri("http://localhost:" + port + "/");
        var config = new HostConfiguration(); config.UrlReservations.CreateAutomatically = true;

        host = new NancyHost(config, uri);
        #endregion
        #region NancyFX hosting loop
        try
        {
            host.Start();

            Console.Write("Start hosting the …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net nancy visual-studio-2012

11
推荐指数
1
解决办法
1788
查看次数

是否有自动记录南希服务的方式?

有没有办法为Nancy服务自动生成Swagger文档(或类似文档)?

我找到了Nancy.Swagger,但是没有关于如何使用它的信息,并且演示应用程序似乎没有演示生成文档(如果有的话,它并不明显).

任何帮助,将不胜感激.谢谢!

nancy swagger

11
推荐指数
2
解决办法
4213
查看次数