如何从 Asp .Net Core 提供目录名称中包含句点的静态文件

Mik*_*ore 3 applepay asp.net-core

我目前正在尝试将 Apple Pay 与网站关联起来。为了验证域名,Apple Pay 要求网站能够提供位于 的特定静态文件https://websiteurl/.well-known/apple-developer-merchantid-domain-association

我目前无法让我的网站提供此静态文件。我可以提供其他静态文件,但不能提供这个特定的文件。我认为问题与目录名称中的句点有关。我尝试遵循此问题的建议,但没有成功。

我的wwwroot目录结构如下所示:

wwwroot
    .well-known
        apple-developer-merchantid-domain-association
        web.config
    App_Data
    Content
    css
    js
        app.js
    lib
Run Code Online (Sandbox Code Playgroud)

.well-known -> web.config 的内容是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension="." mimeType="application/octet-stream" />
    </staticContent>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我相信这就是这个问题的已接受答案中所描述的内容。

但是,当我尝试访问https://websiteurl/.well-known/apple-developer-merchantid-domain-association时,出现 HTTP 404 错误。

我验证了我可以成功访问静态文件,因为https://websiteurl/js/app.js工作成功。

我也尝试web.config直接放在下面wwwroot

不确定我做错了什么。有什么建议么?

Mik*_*ore 7

事实证明,问题不是目录名称中的句点,而是文件缺少扩展名。Startup.cs中的以下代码解决了该问题:

    app.UseStaticFiles();
    app.UseStaticFiles(new StaticFileOptions    
    {
         FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/.well-known")),
         RequestPath = "/.well-known",
         ServeUnknownFileTypes = true,
         DefaultContentType = "text/plain"
     });
Run Code Online (Sandbox Code Playgroud)