我有一个 OData 服务,它使用 ODataController 使用多个 MVC 控制器实现。除了一个控制器之外,我遇到了所有控制器的问题,在我的 return 语句之后返回了内部 500 错误而没有任何帮助:
/// <summary><see cref="ODataController" /> reacting to queries relating to <see cref="Contract" /></summary>
[CustomExceptionFilter]
public class ContractsController : ODataController
{
// GET: odata/Contracts
[EnableQuery]
public IQueryable<Contract> GetContracts()
{
return DataAccess.GetContracts();
}
... other methods
}
/// <summary>Single point of reference to access data</summary>
public static class DataAccess
{
/// <summary>Gets the queryable collection of <see cref="ContractCoverageDetail" /></summary>
/// <returns>The queryable collection of <see cref="ContractCoverageDetail" /></returns>
public static IQueryable<Contract> GetContracts()
{
IQueryable<Contract> results = null;
using (EntityFrameworkContext context = new EntityFrameworkContext())
results = context.Contracts.ToArray().AsQueryable();
return results;
}
}
另一个使用相同 DataAccess 类的控制器可以很好地返回数据。为每个其他控制器返回的所有内容是:
<m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<m:code/>
<m:message xml:lang="en-US">An error has occurred.</m:message>
</m:error>
在我的 return 语句之后似乎出现了错误,如果我在 return (F10) 之后单步执行,我会点击每个人 { get; 集合返回的实体上的属性,然后将带有上述错误的结果返回给浏览器。我一生都无法获得实际的错误信息(内部错误),奇怪的是一个控制器正在工作,而其余控制器则失败而没有任何细节。
有没有人知道可能导致这种情况的原因,或者如何在返回语句之后打开错误详细信息?
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
在 global.asax.cs 中没有帮助,web.config 中的以下任何一个也没有帮助:
<system.web>
<customErrors allowNestedErrors="true" mode="On" />
</system.web>
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
知道如何获得引发的实际异常吗?