【问题标题】:How to access files within the wwwroot folder of a different project?如何访问不同项目的 wwwroot 文件夹中的文件?
【发布时间】:2018-01-12 22:44:27
【问题描述】:

我有 2 个项目需要相互交流。第一个是 ASP.NET MVC 项目,在生产中,用户可以编辑存储在项目 wwwroot 文件夹中的 html 模板。

第二个项目是一个 C# 控制台应用程序,它从数据库中获取一些用户数据,然后使用这些数据将调查通过电子邮件发送给用户。第一个项目的 html 模板需要被这个控制台应用程序抓取,以便可以用于发送这些电子邮件。我希望在第一个项目上线时使用 HtmlAgilityPack 从第一个项目中获取 html 电子邮件模板,类似于以下内容:

var web = new HtmlWeb();
var document = web.Load("www.sitename.com/EmailTemplate");
string text = document.ParsedText;

但我对其他可能适用于这种情况的想法持开放态度。或多或少我认为我只需要弄清楚如何从浏览器路径的 wwwroot 文件夹中访问静态 html 文件,如果可能的话。哦,这两个项目将在不同的服务器上运行,因此本地路径将不起作用。谢谢!

【问题讨论】:

  • 为什么这个调查电子邮件程序需要是一个控制台应用程序?为什么不属于同一个 MVC 项目?还是服务器上的 Windows 服务,它可以非常愉快地读取 HTML 文件,而无需求助于网络抓取解决方法?如果它真的必须在不同的服务器上运行,只需设置一个 UNC 文件共享,它会公开 HTML 文件,并且读取它的权限仅授予其他应用程序的服务帐户。或者只是对文件发出 HTTP 请求,因为它显然托管在您的 IIS 目录中。不需要 HTML Agility 包,一个标准的 HTTP 请求就可以了。方法很多!
  • 另外一种选择是根本没有物理HTML文件,而只是将HTML作为字符串存储在数据库中,每个人都可以很高兴地访问它。
  • 是的,这整件事是一个不幸的设置,但这是客户希望它完成的方式,因为他们有一台服务器运行所有预定的 Windows 服务,另一台服务器托管所有内部和外部网站,他们不想要任何混杂。此外,他们的数据库结构不是我有权修改的,所以我无法添加一个字符串来存储 HTML。不过你是对的,HTTP 请求会更有意义,我只是很难弄清楚用于获取 HTML 的正确 URL。

标签: c# html asp.net asp.net-mvc html-agility-pack


【解决方案1】:

在很大程度上要感谢 ADyson 的 cmets,在这种情况下最有意义的操作是在 MVC 应用程序中创建一个小的 API,用于获取 html 文件,并且控制台应用程序将调用此 API 来检索需要html。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,我通过在我的 _Layout.cshtml 中的静态文件地址的开头添加 ~/ 来解决这个问题。 我的模板文件和照片不再加载到项目中,但布局已加载。这样文件也被加载了

    【讨论】:

      猜你喜欢
      • 2016-06-02
      • 1970-01-01
      • 2021-02-12
      • 2018-06-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多