我有一个使用 Microsoft.AspNetCore.OData.vNext 包的 ASP.Net Core Web API 应用程序。当尝试使用查询字符串来利用 OData 功能时,我收到了 MissingManifestResourceException 异常。以下是相关的代码:
注意:我已经尝试将方法类型从IActionResult更改为IQueryable<>,但没有成功。我还注释掉了Automapper Map方法,以确保没有问题。
以下是使用EF返回数据的方法:
这是带有查询字符串的URL: http://localhost/api/locations?$filter=Name%20eq%20'Bob'
“Name”是模型中指定的字符串字段,并且是数据库中的列。
堆栈跟踪:
[EnableQuery]
[HttpGet()]
public class LocationsController : Controller
{
public IActionResult GetLocations()
{
IQueryable<Location> locationEntities = _locationInfoRepo.GetLocations();
if (locationEntities == null)
{
return NotFound();
}
var results = Mapper.Map<IEnumerable<LocationDTO>>(locationEntities);
return Ok(results);
}
}
注意:我已经尝试将方法类型从IActionResult更改为IQueryable<>,但没有成功。我还注释掉了Automapper Map方法,以确保没有问题。
以下是使用EF返回数据的方法:
public IQueryable<Location> GetLocations()
{
return _context.Locations;
}
这是带有查询字符串的URL: http://localhost/api/locations?$filter=Name%20eq%20'Bob'
“Name”是模型中指定的字符串字段,并且是数据库中的列。
堆栈跟踪:
System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "Microsoft.AspNetCore.OData.SRResources.resources" was correctly embedded or linked into assembly "Microsoft.AspNetCore.OData.vNext" at compile time, or that all the satellite assemblies required are loadable and fully signed.
at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName)
at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
at Microsoft.AspNetCore.OData.SRResources.GetString(String name, String[] formatterNames)
at Microsoft.AspNetCore.OData.SRResources.get_ClrTypeNotInModel()
at Microsoft.AspNetCore.OData.ODataQueryContext..ctor(IEdmModel model, Type elementClrType, ODataPath path)
at Microsoft.AspNetCore.OData.EnableQueryAttribute.OnActionExecuted(ActionExecutedContext context)
at Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute.<OnActionExecutionAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeNextActionFilterAsync>d__25.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeNextExceptionFilterAsync>d__24.MoveNext()
有人能帮我指一下方向吗?
这段内容与IT技术无关。