asp.net - 找不到类型或命名空间名称 'Func<,>'(是否缺少 using 指令或程序集引用?

标签 asp.net .net owin func idictionary

下面是我从在线教程中找到的示例,用于托管起诉 OWIN 的网站,但是当我尝试在我的机器上运行时,我得到了这个错误

CS0246 找不到类型或命名空间名称“Func<,>”(是否缺少 using 指令或程序集引用?)

我认为对于“Func<,>”,我使用了 System,而对于 IDictionary,我使用了 System.Collections.Generic;所以我不明白为什么它仍然无法工作。

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
using AppFunc = Func<IDictionary<string, object>, Task>;


public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var middleware = new Func<AppFunc, AppFunc>(MyMiddleWare);

        app.Use(middleware);
        app.Use<OtherMiddleware>();
    }

    public AppFunc MyMiddleWare(AppFunc next)
    {
        AppFunc appFunc = async (IDictionary<string, object> environment) =>
        {
            var response = environment["owin.ResponseBody"] as Stream;
            byte[] str = Encoding.UTF8.GetBytes("My First Middleware");
            await response.WriteAsync(str, 0, str.Length);

            await next.Invoke(environment);
        };
        return appFunc;
    }

    public class OtherMiddleware : OwinMiddleware
    {
        public OtherMiddleware(OwinMiddleware next) : base(next) { }

        public override async Task Invoke(IOwinContext context)
        {
            byte[] str = Encoding.UTF8.GetBytes(" Other middleware");
            context.Response.Body.Write(str, 0, str.Length);

            await this.Next.Invoke(context);
        }
    }
}

最佳答案

您需要将 AppFunc 放在类中,以便它可以使用 using, 或者您可以为 FuncIDictionaryTask

使用完整的命名空间
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

// Use this
using AppFunc = System.Func<System.Collections.Generic.IDictionary<string, object>, System.Threading.Tasks.Task>;


public class Startup
{
    // Or this
    using AppFunc = Func<IDictionary<string, object>, Task>;

    ...
}

关于asp.net - 找不到类型或命名空间名称 'Func<,>'(是否缺少 using 指令或程序集引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51657738/

相关文章:

c# - 如何使用 Html Agility Pack 获取 img/src 或 a/hrefs?

c# - 使用 Polly 断路器处理多项服务的正确方法

c# - 如何将图像连同 DPI 信息一起保存到剪贴板?

asp.net - 有没有办法在 AspNetUser 表中反序列化 ProtectedTicket ?

jquery - 由于 jquery,Listview ItemCommand 没有触发

c# - 如何将 DataPager 与数据库分页一起使用

asp.net-web-api - owin cors或web api cors

asp.net-mvc - 如何在owin启动类中注入(inject)依赖

asp.net - 为什么 ASP.NET 4.6 不通过 HTTP/2 为我提供页面?

asp.net - 使用 ASP.NET 重定向到非 www-url 域?