У меня есть веб-приложение ASP.NET Core, которое я тестирую, и оно не должно компилироваться или запускаться, но оно делает и то, и другое. Проблема должна быть в том, что я использую имя класса - ActionResult
- из сборки, на которую нет ссылок. Обратите внимание, что ActionResult
не является синим, как разрешенное имя класса, а также обратите внимание, что нет ошибки подчеркивания компилятора:
Более того, проект компилируется и работает просто отлично (хотя, естественно, не работает должным образом, то есть отвечает на запросы HTTP GET на этот URL со значениями, указанными выше). Что происходит?
Вот весь код только для справки:
Program.cs:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace WebApplication2
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}
Startup.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
namespace WebApplication2
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "api/{Default}");
});
}
}
}
DefaultController.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace WebApplication2.wwwroot
{
[Route("api/[controller]")]
[ApiController]
public class DefaultController : ControllerBase
{
// GET: api/Default
[HttpGet]
public async Task<ActionResult<IEnumerable<string>>> Get()
{
return Task.FromResult(new string[] { "value1", "value2" });
}
}
}
Вот информация о VS и .NET:
Microsoft Visual Studio Professional 2017
Версия 15.9.4
VisualStudio.15.Release / 15.9.4 + 28307,222
Microsoft .NET Core 2.1