这是我的 MVC 控制器,一切都很好:
private UnitOfWork UOW;
public InventoryController()
{
UOW = new UnitOfWork();
}
// GET: /Inventory/
public ActionResult Index()
{
var products = UOW.ProductRepository.GetAll().ToList();
return View(products);
}
API 控制器中的相同方法调用给了我一个 Http 500 错误:
private UnitOfWork _unitOfWork;
public TestController()
{
_unitOfWork = new UnitOfWork();
}
public IEnumerable<Product> Get()
{
var products = _unitOfWork.ProductRepository.GetAll().ToList();
return products;
}
调试表明,两个控制器的 UOW 调用中确实都返回了数据。然后我在 Global 中添加了一个客户配置:
public static void CustomizeConfig(HttpConfiguration config)
{
config.Formatters.Remove(config.Formatters.XmlFormatter);
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
我仍然只在 API 控制器中收到 Http 500,不知道为什么。有任何想法吗?
更新:
似乎使用延迟加载导致了问题。当我将关联属性设置为非虚拟时,测试 API 提供了必要的 JSON 字符串。然而,在我包含 Vendor 类之前,我只有 VendorId。我真的很想包括相关的类。有任何想法吗?我知道那里有很多聪明人。任何人?