我希望在我的root中有一个Label1.Text = ""
Label2.Text = ""
Label3.Text = ""
...
目录,用于letsencrypt续订。
我添加了.well-known
的路线,如此:
.well-known
我在我的wwwroot中添加了一个名为 app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @".well-known")),
RequestPath = new PathString("/.well-known"),
ServeUnknownFileTypes = true // serve extensionless file
});
的替代品,但在发布时它永远不会被复制到输出中。
我尝试向其中添加文件并编辑csproj:
.well-known
每次发布我都要手动创建目录。如何将其自动添加到wwwroot?
答案 0 :(得分:6)
我尝试向其中添加文件并编辑csproj:
<ItemGroup> <Content Include="wwwroot\.well-known\" /> </ItemGroup>
您无法通过内容复制文件夹,只能复制文件。你必须把它改成
<ItemGroup>
<Content Include="wwwroot\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<ItemGroup>
并且像评论中提到的那样,你需要在里面放一个空的虚拟文件。
答案 1 :(得分:1)
您可以将以下代码添加到MyProject.csproj
文件中
<ItemGroup>
<Content Include=".well-known\acme-challenge\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
答案 2 :(得分:0)
另一种方法是-如果您有复杂的规则-或文件因域而异(就像某些类型的验证令牌一样),就可以创建控制器。
public class WellKnownFileController : Controller
{
public WellKnownFileController()
{
}
[Route(".well-known/apple-developer-merchantid-domain-association")]
public ContentResult AppleMerchantIDDomainAssociation()
{
switch (Request.Host.Host)
{
case "www2.example.com":
return new ContentResult
{
Content = @"7B227073323935343637",
ContentType = "text/text"
};
default:
throw new Exception("Unregistered domain!");
}
}
}
然后您可以点击.well-known/apple-developer-merchantid-domain-association
并获得该控制器。
当然,您可以从磁盘或任何需要执行的操作中加载文件-或具有传递权限。
答案 3 :(得分:0)
这对我有用...
在 csproj 文件中:
<ItemGroup>
<Content Include="wwwroot\.well-known\**">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
在 Startup.cs 中
app.UseStaticFiles(); // <-- don't forget this
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot/.well-known")),
RequestPath = new PathString("/.well-known"),
ServeUnknownFileTypes = true
});