Редактировать 3: Я не знаю, что я сделал, чтобы исправить это, но моя проблема исчезла. Я думаю, что самые важные вещи, которые я нашел, и убрать, если у вас есть эта проблема, заключается в том, что в ASP.NET 5 MVC 6 мы должны добавить промежуточное ПО почти для всего, включая страницы ошибок разработчиков, используя app.UseDeveloperExceptionPage();
... после этого я понял что трассировка стека может ссылаться на другие классы, на которые ссылаются внутри контроллера, такие как репозиторий и объект контекста, в моем случае. Я немного испортил их, но я не помню, чтобы что-то изменилось. Я думаю, что у меня, возможно, была опечатка в конструкторе моего класса репозитория.ASP.NET5 500 Ошибка при использовании шаблона репозитория
Я получаю 500 внутренних ошибок сервера с контроллером, но он отображает статические данные json без конструктора. Я подозреваю, что что-то не так с встроенной инъекцией зависимостей, но я не могу понять это, поскольку во время сборки я не получаю никаких ошибок или предупреждений.
Редактировать: Я вижу абсолютно ничего в браузере при навигации по http://localhost:5000/api/blogpost/
. Просто пустая страница. Нет ошибки. Нет, ничего. Используя Postman для отправки HTTP-запроса, я получаю код ошибки 500. Опять же, комментируя конструктор, я вижу {"name":"Cameron"}
и получаю код 200 в обоих браузерах и Postman. В VS нет исключений, и ошибок в консоли вывода также нет.
Edit 2: Я нашел промежуточное app.UseDeveloperExceptionPage();
и производит MissingMethodException: No parameterless constructor defined for this object.
- Если я конструктор без параметров, она производит: InvalidOperationException: Multiple constructors accepting all given argument types have been found in type 'MyApp.Controllers.BlogPostController'. There should only be one applicable constructor.
- Похоже, что-то юродивый происходит с DEP инъекции ASP.NET5 в?
Вот мой контроллер:
using MyApp.Data.Repository;
using MyApp.Models;
using Microsoft.AspNet.Mvc;
using System;
namespace MyApp.Controllers
{
[Route("api/[controller]")]
public class BlogPostController : Controller
{
// If I comment out this var and the constructor this works.
private IBlogPostRepository _repository;
// If I leave them here, I get a 500 Internal Server Error.
// If I set a breakpoint here, it never fires.
// If I create a constructor that takes zero args, it never fires.
// I do not get any errors.
public BlogPostController(IBlogPostRepository repository)
{
_repository = repository;
}
[HttpGet]
public JsonResult Get()
{
return Json(new { name = "Cameron" });
}
}
}
Вот Startup.cs ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
// MVC 6
services.AddMvc();
// EntityFramework 7
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<AppDbContext>(options =>
{
// Will use the last Data:DefaultConnection:ConnectionString
// that was loaded from the config files in the constructor.
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]);
});
// Injections
services.AddTransient<AppDbContextSeedData>();
services.AddScoped<IBlogPostRepository, BlogPostRepository>();
}
Какой тип исключения? и какое сообщение? –
@JoelRamosMichaliszen, не исключение. Никакой ошибки. Даже когда я загружаю его в свой браузер, я ничего не вижу. Я вижу ошибку внутреннего сервера 500 при попытке загрузить из Postman. – scrapcode
http://stackoverflow.com/questions/5385714/deploying-website-500-internal-server-error – CodeCaster