我刚刚从另一家公司接手了一堆 C# 代码,但在第一次构建工作时遇到了很大的麻烦。该代码使用了一个名为 Nancy 的框架,而不是 MVC。我以前从未使用过这个框架,我的问题可能有一个真正简单的答案,如果我错过了对 Nancy 的一些基本了解,我很抱歉,然后再在这里发布。
问题归结为一个类,处理应用程序的初始化(我认为)从我读过的内容来看,这是非常标准的南希:
using System;
using Nancy;
using NewRelicAgent = NewRelic.Api.Agent.NewRelic;
using Nancy.Bootstrapper;
using Nancy.Routing;
public class NewRelicStartup : IApplicationStartup
{
private readonly IRouteResolver routeResolver;
public NewRelicStartup (IRouteResolver routeResolver)
{
this.routeResolver = routeResolver;
}
public void Initialize(IPipelines pipelines)
{
pipelines.BeforeRequest.AddItemToStartOfPipeline(
context =>
{
var route = routeResolver.Resolve(context);
if (route == null || route.Item1 == null || route.Item1.Description == null) // probably not necessary but don't want the chance of losing visibility on anything
{
NewRelicAgent.SetTransactionName(
context.Request.Method,
context.Request.Url.ToString());
}
else
{
NewRelicAgent.SetTransactionName(
route.Item1.Description.Method,
route.Item1.Description.Path);
}
return null;
});
pipelines.OnError.AddItemToEndOfPipeline(
(context, ex) => {
NewRelicAgent.NoticeError(ex);
return null;
}
);
}
}
在构建此代码时,我遇到了几个错误,其中一些是:
Delegate 'System.Func<Nancy.NancyContext,System.Threading.CancellationToken,System.Threading.Tasks.Task<Nancy.Response>>' does not take 1 arguments
Cannot convert lambda expression to type 'Nancy.PipelineItem<System.Func<Nancy.NancyContext,System.Threading.CancellationToken,System.Threading.Tasks.Task<Nancy.Response>>>' because it is not a delegate type
这是我得到的错误类型的屏幕截图:
https://www.dropbox.com/s/cigcfc4sfj8batg/Nancy%20Error.PNG
我 100% 确定,这是 Visual Studio 方面的某种解释问题,因为代码是实时 atm。我只是无法在VS中构建它。
你们有谁知道我错过了什么,或者做错了什么?记住; 该代码正在工作并且可以使用atm。