【发布时间】: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