【发布时间】:2015-11-29 14:27:20
【问题描述】:
以下在指示的行上静默失败。
using (var ht = new HttpClient())
{
var r = await ht.GetAsync(RootUrl + Id.ToString()); <-----
Page = await r.Content.ReadAsStringAsync();
}
没有例外,没有错误,没有什么。执行只是停止,没有在下一行遇到断点,应用程序退出。包围在 try/catch 中也不会触发 catch。
作为 DNX .xproj 命令行应用运行。
coreclr 和 full 的行为相同。通过 VS 和 DNX 命令行启动。
这到底是怎么回事?
Project.json 如下:
{
"version": "1.0.0-*",
"description": "Scrapers Console Application",
"authors": [ "Kaelan" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"System.Net.Http": "4.0.0-*",
"HtmlAgilityPack": "1.4.9"
},
"commands": {
"Scrapers": "Scrapers"
},
"frameworks": {
"dnx451": { }
}
}
编辑:我正在使用的完整代码。拿了实际项目的一部分来测试,(保持同样的问题)。
public class Program
{
const string RootUrl = "<-snipped->";
public async void Main(string[] args)
{
var Id = 244;
var Page = "";
using (var ht = new HttpClient())
{
var r = await ht.GetAsync(RootUrl + Id.ToString());
Debug.Write(r.StatusCode + " on page: " + Id.ToString());
Page = await r.Content.ReadAsStringAsync();
}
Console.ReadLine();
}
}
【问题讨论】:
-
发布可执行的重现代码。
-
不会添加很多,但请参阅编辑
-
不应该有 async Main 的编译器警告吗?顺便说一句,回购确实指出了解决方案。查看答案。
-
你会这么想的..
-
@usr:这不是一个普通的控制台 Main。这是一个 DNX 托管的控制台,带有一个实例(非静态)
Main方法,它实际上允许async Task Main方法。所以编译器根本不把它当作特殊的(还)。我有一个blog post exploring this a bit。
标签: c# asp.net-core