如果要让引用的静态资源可以访问,需要在Startup的Configure中进行如下配置:
app.UseStaticFiles();
这时wwwroot中的静态文件可以被访问。但如果我们编写了一个Razor类库,采用Application Part的方式加载到应用中,这个模块中嵌入的静态资源如何访问呢?这就需要使用EmbeddedFileProvider。假设我们的Razor类库的名称为MyWebPart,这个类库中的静态资源保存在wwwroot目录下:
图片.png
我们希望上图中的mystyle.css可以通过Url访问:/MyWebPart/css/mystyle.css。代码如下:
app.UseStaticFiles();
String basePath2 = System.IO.Path.GetDirectoryName(typeof(Program).Assembly.Location);
var mypath = System.IO.Path.Combine(basePath2, "Addins\\MyWebPart\\MyWebPart.dll");
var myPlugin = System.Runtime.Loader.AssemblyLoadContext.Default
.LoadFromAssemblyPath(mypath);
var personEmbeddedFileProvider = new EmbeddedFileProvider(
myPlugin,
"MyWebPart.wwwroot"
);
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = personEmbeddedFileProvider,
RequestPath = new PathString("/MyWebPart")
});
编译好的动态库放在Addins\MyWebPart目录下,这种情况下,宿主项目不需要引用MyWebPart。
网友评论