如何解决在ASP.NET Core的Razor视图中注入IHostingEnvironment
我正在从XML
文件夹中存储的wwwroot
文件读取网站元标记。访问它的方式是使用IHostingEnvironment
,但是由于它位于共享的_layout
上,因此我该如何注入它。我收到错误消息
“名称IHostingEnvironment在当前上下文中不存在。
有一种方法可以使用XML
为_layout
设置元标记,以便它出现在共享此Asp.Net
的所有_layout
页中。
_layout.cshtml
@using Jaeger.Services
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
@inject MenuMasterService menus
@using System.Xml.Linq;
<!doctype html>
<html lang="de">
<head>
@{
var filepath = IHostingEnvironment.ContentRootPath.ToString() + @"\meta-data.xml";
XDocument xmlDoc = XDocument.Load(filepath);
//Run query
IEnumerable<XElement> metaList = xmlDoc.Root.Elements("meta");
var result = from a in metaList
select new
{
title = a.Element("title").Value.Trim(),description = a.Element("description").Value.Trim(),keywords = a.Element("keywords").Value.Trim()
};
//jaeger
var xml_tilte = result.ElementAt(0).title;
var xml_desc = result.ElementAt(0).description;
}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
@*<meta name="format-detection" content="telephone=no">*@
<title>@ViewData["Title"] - @xml_tilte</title>
<meta name="description" content="@xml_desc">
.....
解决方法
根据@Daniel A. White的建议,我编写了一个自定义服务并能够读取文件。在此处添加自定义服务可能会对其他人有所帮助。
MetaReaderService.cs
jvm.options
_Layout.cshtml
kill -9
有关自定义服务here
的更多详细信息版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。