Я шел через учебник по угловым героям и хотел заменить службу в памяти реальным бэкэндом.Я хотел создать ASP.net WebAPI.Контроллер работал совершенно нормально, как это с моим угловым интерфейсом:
[EnableCors(origins: "http://localhost:4200", headers: "*", methods: "*")]
public class HeroesController : ApiController
{
private static readonly List<Hero> heroes;
static HeroesController()
{
heroes = new List<Hero>()
{
new Hero { id = 11, name = "Mr. Nice" },
new Hero { id = 12, name = "Narco" }
};
}
public IEnumerable<Hero> Get()
{
return heroes;
}
public Hero Get(int id)
{
return heroes.Find(x => x.id == id);
}
public Hero Post([FromBody] Hero hero)
{
hero.id = heroes.Max(x => x.id) + 1;
heroes.Add(hero);
return hero;
}
public void Put([FromBody] Hero hero)
{
Hero oldHero = heroes.FirstOrDefault(x => x.id == hero.id);
if (oldHero != null)
{
heroes.Remove(oldHero);
heroes.Add(hero);
}
}
public void Delete(int id)
{
Hero oldHero = heroes.FirstOrDefault(x => x.id == id);
if (oldHero != null)
{
heroes.Remove(oldHero);
}
}
}
Это было здорово и круто, пока я не попытался создать метод, который не был назван как "get", "post", "put" или"удалять".Я думал, что мог бы вставить другой публичный метод, подобный этому:
public void DoSomething()
{
}
С этого момента каждый метод продолжал работать, КРОМЕ поста.Когда я хотел вызвать сообщение, я получил следующие сообщения:
ОПЦИИ http://localhost:52835/api/heroes 500 (Внутренняя ошибка сервера)
Не удалось загрузить http://localhost:52835/api/heroes:Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin».Источник 'http://localhost:4200', следовательно, запрещен доступ.
ОШИБКА TypeError: Невозможно прочитать свойство' id 'из неопределенного
ОШИБКА КОНТЕКСТА DebugContext_ {view: {…}, nodeIndex: 2, nodeDef: {…}, elDef: {…}, elView: {…}}
Да, угловой интерфейс работает на порте 4200 и webapi на 52835. Поэтому я установил и активировал CORSкоторый работает очень хорошо, пока я не добавил упомянутый пустой метод.Если я изменю метод на приватный, все снова будет работать нормально.Я не понимаюПожалуйста, помогите мне: (