南希样本应用程序中的Lambda错误

时间:2016-04-28 19:58:43

标签: c# rest lambda compiler-errors nancy

我在尝试让简单的Nancy示例程序工作时遇到的错误让我感到困惑。

namespace NancyServer {

    using Nancy;

    public class ServerApi : NancyModule {
        public ServerApi() {
            Get["/"] = _ => "Hello World";
        }
    }

}

Visual Studio 2013专业人士在我的路线中对lambda进行了抨击。

_ => "Hello World";

我还尝试了其他一些表达方式,但它们都有同样的问题。

Get["/products/{id}"] = _ => {
    System.Console.WriteLine( "test" );
};

以上片段也是直接从南希维基拉出来的。

Intellisense强调lambda赋值_ =>并表示委托不带一个参数。如果我尝试构建,我会遇到三个错误。

Error 1 Delegate 'System.Func<dynamic,System.Threading.CancellationToken,System.Threading.Tasks.Task<dynamic>>' does not take 1 arguments
Error 2 Cannot implicitly convert type 'string' to 'System.Threading.Tasks.Task<dynamic>'
Error 3 Cannot convert lambda expression to delegate type 'System.Func<dynamic,System.Threading.CancellationToken,System.Threading.Tasks.Task<dynamic>>' because some of the return types in the block are not implicitly convertible to the delegate return type

我现在用Google搜索了几个小时,无法弄清楚这里发生了什么。这是一个环境错误吗?可能会出现某种命名空间问题吗?我添加了Nancy和Nancy.Hosting.Self作为我的项目的依赖项。项目中唯一的其他代码是一个简单的主要自我托管服务。

namespace NancyServer {

    using System;
    using Nancy.Hosting.Self;

    public class ServerMain {
        static void Main( string[] args ) {
            var nancyHost = new NancyHost( new Uri( "http://localhost:25000" ) );
            nancyHost.Start();
            Console.WriteLine( "Server running..." );
            Console.ReadKey();
            nancyHost.Stop();
        }
    }

}

我添加了Nancy和Nancy.Hosting.Self直接通过VS2013中的Nuget。

1 个答案:

答案 0 :(得分:2)

改变它: Get["/"] = (params,token) => Task.FromResult<dynamic>("Hello World");

Nancy v2.0.0现在一直是异步的。