所以,我遇到了下一个问题。
1)创建新的asp core 2.1应用程序(模板MVC)
2)添加新控制器:
[EnableCors]
public class ApiController : Controller
{
public string Get(int id)
{
return $"You sent {id}";
}
}
3)在Startup.cs中启用CORS:
app.UseCors(builder => builder.AllowAnyOrigin());
4)使用下面的代码创建classic / .net核心控制台应用程序:
class Program
{
static void Main(string[] args)
{
AsyncMethod();
}
private static async void AsyncMethod()
{
Task.Delay(5000).Wait();
var http = new HttpClient();
var url = "https://localhost:44353/api/get/4";
var response = await http.GetAsync(url);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
如果我直接在Main()中添加代码,或者甚至创建WPF / UWP / WinForms应用程序并将此代码粘贴到那里,仍然没有任何效果。 (经典和.core)控制台应用程序都只是退出调试而没有任何异常或消息,并且仅在我看到的调试窗口中
The program "[10340] dotnet.exe" ended with code 0 (0x0).
Program "[10340] dotnet.exe: Program Tracing" ended with code 0 (0x0).
使用WebClient替换此代码没有帮助。此外,对于经典的ASP MVC 4应用程序,此代码非常有效,因此我的控制台应用程序是正确的。但是,此代码不适用于.Core应用。
邮递员和RESTed客户端可以完美地看到api,并且可以毫无问题地发送请求。
我想念什么?
答案 0 :(得分:0)
如果有人会遇到这个问题。
1)删除行
app.UseCors(builder => builder.AllowAnyOrigin());
2)更换装饰器
[EnableCors]
使用
[EnableCors("*"]
3)确保您不尝试使用async void
(感谢 Kirk Larkin )。