.netcore 应用程序的 wwwroot 之外的静态文件
Static files outside the wwwroot for .netcore app
我正在使用 https://github.com/ebekker/ACMESharp for my SSL at my @home web-server (it's free! :O). It was pretty manual, but noticed on the wiki it mentioned another project at https://github.com/Lone-Coder/letsencrypt-win-simple,这是一个 GUI,用于自动申请、下载和安装您的 SSL 证书到您的网络服务器。
GUI 用于验证您的域的方法是创建一个随机命名的文件,其中包含 [webroot]/.well-known/[randomFile]
w/o 扩展名中的随机文本字符串。使用此 [webroot] 上的 .dotnetcore 应用程序 运行ning,我无法提供该文件,即使按照在 IIS 下更改 "Handler Mappings" 的说明进行操作也是如此。
我似乎可以通过在 [webRoot]/wwwroot/[whatever]
直接导航到文件来提供文件 - 为什么我不能在 [webroot]/.well-known/[randomFile]
中导航?
有人知道解决这个问题的办法吗?我可以删除 .netcore 应用程序,然后 运行 SSL 证书安装,但此安装需要每 2-3 个月进行一次,并且由于它是手动的,我更愿意弄清楚如何以正确的方式进行安装。
我在这里找到了我需要的信息:https://docs.asp.net/en/latest/fundamentals/static-files.html
基本上在我的 Statup.cs 中,我需要更改此:
// allows for the direct browsing of files within the wwwroot folder
app.UseStaticFiles();
// MVC routes
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
对此:
// allows for the direct browsing of files within the wwwroot folder
app.UseStaticFiles();
// Allow static files within the .well-known directory to allow for automatic SSL renewal
app.UseStaticFiles(new StaticFileOptions()
{
ServeUnknownFileTypes = true, // this was needed as IIS would not serve extensionless URLs from the directory without it
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @".well-known")),
RequestPath = new PathString("/.well-known")
});
// MVC routes
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
编辑 -
请注意,此目录“.well-known”仅在 Web 服务器上创建,当我在本地再次开始开发时,我遇到了错误,因为“.well-known”目录不存在。所以现在我的项目中只有一个空目录,但至少我的 SSL 更新是自动的! :D
我正在使用 https://github.com/ebekker/ACMESharp for my SSL at my @home web-server (it's free! :O). It was pretty manual, but noticed on the wiki it mentioned another project at https://github.com/Lone-Coder/letsencrypt-win-simple,这是一个 GUI,用于自动申请、下载和安装您的 SSL 证书到您的网络服务器。
GUI 用于验证您的域的方法是创建一个随机命名的文件,其中包含 [webroot]/.well-known/[randomFile]
w/o 扩展名中的随机文本字符串。使用此 [webroot] 上的 .dotnetcore 应用程序 运行ning,我无法提供该文件,即使按照在 IIS 下更改 "Handler Mappings" 的说明进行操作也是如此。
我似乎可以通过在 [webRoot]/wwwroot/[whatever]
直接导航到文件来提供文件 - 为什么我不能在 [webroot]/.well-known/[randomFile]
中导航?
有人知道解决这个问题的办法吗?我可以删除 .netcore 应用程序,然后 运行 SSL 证书安装,但此安装需要每 2-3 个月进行一次,并且由于它是手动的,我更愿意弄清楚如何以正确的方式进行安装。
我在这里找到了我需要的信息:https://docs.asp.net/en/latest/fundamentals/static-files.html
基本上在我的 Statup.cs 中,我需要更改此:
// allows for the direct browsing of files within the wwwroot folder
app.UseStaticFiles();
// MVC routes
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
对此:
// allows for the direct browsing of files within the wwwroot folder
app.UseStaticFiles();
// Allow static files within the .well-known directory to allow for automatic SSL renewal
app.UseStaticFiles(new StaticFileOptions()
{
ServeUnknownFileTypes = true, // this was needed as IIS would not serve extensionless URLs from the directory without it
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @".well-known")),
RequestPath = new PathString("/.well-known")
});
// MVC routes
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
编辑 - 请注意,此目录“.well-known”仅在 Web 服务器上创建,当我在本地再次开始开发时,我遇到了错误,因为“.well-known”目录不存在。所以现在我的项目中只有一个空目录,但至少我的 SSL 更新是自动的! :D