程序在发布后 用dotnet xxx.dll的方式运行,所有的静态资源都访问不了,比如网页中引用的图片,css,js都访问不了。这些资源在发布后文件夹下的wwwroot下面是存在的,可是访问不了。
如果部署在 linux 上,需要注意大小写问题。
是 windows上部署的
@hanshuhe: wwwroot
文件夹与 xxx.dll
是在同一个文件夹吗?
你的运行方式会导致进程的工作目录指向 cmd 提示的目录,如果不是在与 wwwroot 相同的目录下调用 cmd 会导致无法找到文件,因为 asp.net core 的默认内容根目录是进程工作目录。如果希望 cmd 不会影响网站工作状态,可以在 Main 方法开始处调用 System.IO 中的相关 API 设置进程工作目录为主 dll 目录再创建主机(wwwroot 文件夹默认和主 dll 在相同文件夹,主 dll 目录可以反射获取)。注意在调试模式下不要修改,不然会导致调试模式下静态资源404。可以使用条件编译确保只在发行模式执行工作目录调整的相关代码。