【问题标题】:Asp.Net Core 2.0 Web Application Static Files Gives 404Asp.Net Core 2.0 Web 应用程序静态文件给出 404
【发布时间】:2018-08-04 23:11:00
【问题描述】:

我尝试从我的网络服务器(asp.net core 2.0)获取自定义扩展静态文件。

我尝试下一个运行:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDirectoryBrowser(); // just to see that I have this files 
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseStaticFiles();
        app.UseDirectoryBrowser();
    }
}

所以,我可以在文件夹中看到我的文件,但无法获取 - 它抛出 404:

当我点击它时:什么也没发生,我得到了 404。

为 Evk 更新:

我将 static_json.json 文件添加到 src 文件夹的静态文件中,并按预期得到它:

提前感谢您的帮助!

【问题讨论】:

  • 这个应用程序是 IIS 托管的吗?
  • @kuskmen 是的,只需通过调试运行它。只是默认项目。没有更改 webroot 文件夹位置等...
  • 您要提供的文件在哪里? UseStaticFiles() 将默认提供 wwwroot 上的文件。如果您尝试在不同的文件夹中提供文件,请查看:docs.microsoft.com/en-us/aspnet/core/fundamentals/…
  • 所以您的问题暗示具有非“自定义”扩展名的文件有效吗?例如 .txt 文件?
  • @jpgrassi 是的,我使用默认文件夹:wwwroot/src。如您所见,浏览器检测到这些文件就像静态内容一样,但它不想返回它(只是抛出 404)

标签: c# asp.net web-services asp.net-core http-status-code-404


【解决方案1】:

我不确定,但您的扩展似乎被 IIS 设置拒绝直接作为静态资源访问。请为 web.config 试试这个:

<configuration> 
   <system.webServer> 
       <security> 
          <requestFiltering> 
              <fileExtensions> 
                <add fileExtension=".appinstaller" allowed="true" /> 
              </fileExtensions> 
         </requestFiltering> 
       </security> 
    </system.webServer> 
</configuration> 

还要检查请求过滤。查看更多信息: How to deny access to a specific file name extension

【讨论】:

    【解决方案2】:

    我在开发过程中遇到了问题。 我使用 UseStaticFiles 的重载方法将选项 ServeUnknownFileTypes 设置为 true。

    public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
        app.UseDeveloperExceptionPage()
            .UseSession()
            .UseStaticFiles(new StaticFileOptions
            {
                ServeUnknownFileTypes = true,
            })
            .UseDirectoryBrowser()
            .UseRequestLocalization()
            .UseMvcWithDefaultRoute();
    }
    

    【讨论】:

      【解决方案3】:

      这个答案可能来晚了,但在我的情况下,解决方案是在我的 IIS 设置中。 JavaScript 文件扩展名 (.js) 在请求过滤的允许列中设置为 False。 从请求过滤中删除 js 文件为我解决了这个问题。

      【讨论】:

        猜你喜欢
        • 2016-11-26
        • 2022-10-04
        • 2021-12-23
        • 2019-08-10
        • 1970-01-01
        • 2022-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多