Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Azure中通过Dot Net核心Web APi提供静态网站内容_C#_Azure_.net Core_Asp.net Core Webapi - Fatal编程技术网

C# 如何在Azure中通过Dot Net核心Web APi提供静态网站内容

C# 如何在Azure中通过Dot Net核心Web APi提供静态网站内容,c#,azure,.net-core,asp.net-core-webapi,C#,Azure,.net Core,Asp.net Core Webapi,我有一个在Azure中开发、部署和运行的.Net核心Web API。它现在充当API网关。我想当用户在浏览器中点击url的根目录时提供HTML内容 我们的网站内容通过静态网站发布到CDN后面的azure存储中。我按照下面链接中的步骤进行设置 我们如何在azure存储的my dot net core web api中提供此内容并将其返回到浏览器 我有以下代码,适用于我在本地拥有的内容 public void Configure(IApplicationBuilder app, I

我有一个在Azure中开发、部署和运行的.Net核心Web API。它现在充当API网关。我想当用户在浏览器中点击url的根目录时提供HTML内容

我们的网站内容通过静态网站发布到CDN后面的azure存储中。我按照下面链接中的步骤进行设置

我们如何在azure存储的my dot net core web api中提供此内容并将其返回到浏览器

我有以下代码,适用于我在本地拥有的内容

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();

            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapDefaultControllerRoute();
            });
        }
我应该在静态网站blob下读取azure存储的内容并将其返回,还是只重定向到静态网站或CDN url

我正试图按照下面答案2中的建议,使用ocelot遵循架构


我亲自尝试了您问题描述的内容,首先显示我的代码,您可以参考它。并建议你阅读

我的项目结构:

编译选项,包括自定义文件夹。

项目的所有准备工作都已完成。以下是我对您的问题的建议:

  • 如果您使用的是azure web app服务,则可以直接使用项目访问API和静态资源。 如果您想使用cdn,您可以在webapp的
    网络
    中进行设置,这也可以满足您的需要
  • 如果您只是在存储中使用静态网站,那么我们的.net核心项目似乎无法直接在其中运行,并且应该缺少操作环境(我的测试结果是这样的,我没有尝试其他方法来解决它)。

    我的建议是,如果您确实需要使用存储中的静态资源文件来实现,那么将原始静态资源文件复制到中,但它们是两个不同于用于访问api的链接URL的URL


  • 总之,我建议试试我的第一个计划,这肯定会对你有很大帮助。

    你遵循了吗?是,它从本地文件夹提供服务。静态文件存储在项目的web根目录中。
    我可以将launchUrl值更改为:http://localhost:4343 将其指向根以返回索引html。但不确定如何返回azure cdn内容。
    您这句话是什么意思?你的意思是你想将其发布到Azure以进行托管吗?我已经将react project的前端SPA静态文件发布到Azure存储->静态网站。我想在用户点击dot net core api的根目录时返回该内容。您的意思是您已经为api创建了
    azure web app
    ,并且希望通过
    azure静态web app
    提供静态内容。
    //for wwwroot folder
    app.UseStaticFiles();
    
    //for wwwroot outside folder
    
    app.UseStaticFiles(new StaticFileOptions
    {
         FileProvider = new PhysicalFileProvider(
             Path.Combine(env.ContentRootPath, "StaticContent")),
         RequestPath = "/StaticContent"
    });