首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么"Environment.CurrentDirectory“设置为"C:\\Program Files\\IIS Express"?

为什么"Environment.CurrentDirectory“设置为"C:\\Program Files\\IIS Express"?
EN

Stack Overflow用户
提问于 2019-01-12 07:33:30
回答 1查看 2.4K关注 0票数 1

我在https://www.c-sharpcorner.com/article/building-api-gateway-using-ocelot-in-asp-net-core/上遵循API Gateway示例

我创建了一个空的asp.net web应用程序,并按照上述链接中提到的步骤进行操作。

我在Program.cs文件中的Main()函数是:

代码语言:javascript
复制
    public static void Main(string[] args)
    {
        IWebHostBuilder builder = new WebHostBuilder();
        builder.ConfigureServices(s =>
        {
            s.AddSingleton(builder);
        });
        builder.UseKestrel()
               .UseContentRoot(Directory.GetCurrentDirectory())
               .UseStartup<Startup>()
               .UseUrls("http://localhost:9000");

        var host = builder.Build();
        host.Run();
    }

另外,我的Startup.cs文件包含以下代码:

代码语言:javascript
复制
public class Startup
{
    public Startup(IHostingEnvironment env)
    {
        var builder = new Microsoft.Extensions.Configuration.ConfigurationBuilder();
        builder.SetBasePath(Environment.CurrentDirectory)
               .AddJsonFile("configuration.json", optional: false, reloadOnChange: true)
               .AddEnvironmentVariables();

        Configuration = builder.Build();
    }

    public IConfigurationRoot Configuration { get; private set; }

    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection services)
    {
        Action<ConfigurationBuilderCachePart> settings = (x) =>
        {
            x.WithMicrosoftLogging(log =>
            {
                log.AddConsole(LogLevel.Debug);

            }).WithDictionaryHandle();
        };
        services.AddOcelot();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public async void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        await app.UseOcelot();
    }
}

当我运行代码时,我得到了文件configuration.json NOT FOUND的错误。当我在上面的函数中检查当前目录的源代码时,我看到Directory.GetCurrentDirectory()返回的路径是C:\\Program Files\\IIS Express,而不是当前项目目录。

我的问题是,为什么路径设置为IIS目录?我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2019-03-05 04:29:38

在.net Core3.0中提供永久修复之前,您也可以在进程外运行此程序。要更改此设置,可以将csproj文件中的设置从

代码语言:javascript
复制
<AspNetCoreHostingModel>inprocess</AspNetCoreHostingModel>

代码语言:javascript
复制
<AspNetCoreHostingModel>outofprocess</AspNetCoreHostingModel>

或者,如果你在IISExpress下运行,你可以在launchsettings.json文件中设置托管模型。右键单击Visual Studion中的项目文件,然后单击“属性”“->调试”“-> Web服务器”“设置->托管模型”。将其设置为进程外将添加

代码语言:javascript
复制
"ancmHostingModel": "OutOfProcess" 

添加到launchsettings.json中的IIS Express配置文件

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

https://stackoverflow.com/questions/54155392

复制
相关文章

相似问题

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