首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“WebHost”由于其保护级别而无法访问

“WebHost”由于其保护级别而无法访问
EN

Stack Overflow用户
提问于 2021-01-21 12:04:07
回答 1查看 813关注 0票数 1

我试图遵循微软的Ocelot网关教程(https://learn.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot)。

首先,我改进了一个新的空ASP.NET核心web应用程序:

代码语言:javascript
复制
dotnet new web

然后我安装了Ocelot依赖项(https://www.nuget.org/packages/Ocelot/):

代码语言:javascript
复制
dotnet add package Ocelot --version 17.0.0

然后,我从教程中提取了代码:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
using System.IO;

namespace MyApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args)
        {
            var builder = WebHost.CreateDefaultBuilder(args);

            builder.ConfigureServices(s => s.AddSingleton(builder))
                    .ConfigureAppConfiguration(
                          ic => ic.AddJsonFile(Path.Combine("configuration",
                                                            "configuration.json")))
                    .UseStartup<Startup>();
            var host = builder.Build();
            return host;
        }
    }
}

但是,它抱怨说,在BuildWebHost方法中调用的BuildWebHost类“由于其保护级别而无法访问”。据微软(https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.webhost)称,WebHost“为创建具有预先配置的默认值的IWebHost和IWebHostBuilder实例提供了方便的方法”,如下所示:

代码语言:javascript
复制
public static class WebHost
...

为什么它抱怨WebHost是不可访问的,而这个类实际上是公开的?我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-21 12:16:27

文档中,WebHost位于名称空间Microsoft.AspNetCore中。但是在您的代码中,它没有使用这个命名空间。

在Visual中,您可以尝试转到WebHost上的definition来发现类型的来源。

正如@leiflundgren所支持的那样,正如您的代码具有使用Microsoft.AspNetCore.Hosting一样,编译器认为您需要使用Microsoft.AspNetCore.Hosting.WebHost

https://github.com/dotnet/aspnetcore/blob/main/src/Hosting/Hosting/src/Internal/WebHost.cs

代码语言:javascript
复制
namespace Microsoft.AspNetCore.Hosting;

internal sealed partial class WebHost : IWebHost, IAsyncDisposable
{
....
}

但是这个类有作用域internal,那么它不会被公开,可以被代码使用。因此,出现了以下错误:

WebHost由于其保护级别而无法访问。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65827042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档