c#-有关MVC的Nancy Framework(和NewRelic)的问题
作者:互联网
我刚从另一家公司那里接过一堆C#代码,但要使第一个版本开始工作却遇到了很大的麻烦.该代码使用称为Nancy的框架,而不是MVC.我以前从未使用过此框架,可能只有一个真正简单的答案可以回答我的问题,如果我错过了有关Nancy的一些基本知识,请在此处表示歉意.
这个问题归结为一个类,处理应用程序的初始化(我认为)从我读到的内容来看,这是非常标准的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中构建它.
你们中的任何人是否知道我的缺失或做错了什么?记得;该代码可以正常工作并且可以正常工作.
解决方法:
尝试更改“返回null;” “返回(Nancy.Response)为空;”
编辑:抱歉,只看了屏幕截图-它使用的是一些已更改为0.20的属性,因此您将不得不手动修复代码(它现在在核心是异步的),或暂时回滚到0.19,然后重新-稍后再编写该段代码.
再次编辑:在此之前:
pipelines.BeforeRequest.AddItemToStartOfPipeline(
context =>
{
var route = routeResolver.Resolve(context);
if (route == null || route.Route == null || route.Route.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.Route.Description.Method,
route.Route.Description.Path);
}
return null;
});
标签:newrelic,nancy,c,net 来源: https://codeday.me/bug/20191122/2061992.html