使用selfhost .Net Core 2.x时,默认情况下将静态提供所有构建工件,因为默认目录与binary / exe位于同一位置。
这意味着如果知道dll的名称,他们就可以请求 它们位于/Whatever.dll,也可以按名称获取任何配置文件, 即appSettings。
如果更改内容以使根目录不同或该目录不在VFS中,则/ metadata停止工作。
是否可以使/ metadata工作,但不允许静态提供服务的dll等?
我尝试限制路径。这样可以保留设置/ dll / exe的服务,但/ metadata页将完全空白。
答案 0 :(得分:1)
/metadata
页面与静态文件目录位置无关,您可能已导致启动异常,该异常影响了它的工作方式。如果您可以在GitHub上放置一个独立项目,该项目显示了我可以调查的问题。
只能投放Config.AllowFileExtensions
中的扩展名,您可以通过以下方式删除.dll
:
Config.AllowFileExtensions.Remove("dll");
.exe
在默认情况下是不可用的,如果可以下载它们,则可能是使用.NET Core的静态文件处理程序来下载它们。
通常将WebRoot放在项目根目录之外,对于.NET Core,该根目录通常为/wwwroot
。
答案 1 :(得分:0)
编辑:更新了消除缺陷的建议。
我刚开始要做的是将.UseWebRoot()
添加到
构建器,然后从自托管ServiceStack模板切换到
根据Mythz的建议添加到Web模板。该网页模板为
可以解决我的问题。
再次感谢。