c# - 查看组件未能获取数据
问题描述
我在 .net Core Web 应用程序中执行视图组件时遇到问题。我之前用过几次都没有问题,但这次它的表现有点滑稽。
在输出窗口中,我可以清楚地看到 Visual Studio 正在尝试从数据库中查询数据,但是此命令每秒一次一项地执行无数次,直到我停止应用程序(结果当然不会呈现) .
此外,我注意到一段时间后使用的内存约为 2.5GB,并且仍在增加。
有谁知道怎么了?非常感谢任何帮助!
查看输出窗口::
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2019-02-28T08:48:17.5125091Z","tags":{"ai.internal.nodeName":"V00X6036","ai.operation.name":"GET /DataTaxonomyTool/Index","ai.application.ver":"1.0.0.0","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.cloud.roleInstance":"V00X6036","ai.location.ip":"127.0.0.1","ai.operation.id":"63f680a6-4a03a53f2cc95492","ai.operation.parentId":"|63f680a6-4a03a53f2cc95492."},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']\r\nSELECT [i].[Id], [i].[ObjectName], [i].[ObjectType]\r\nFROM [Items] AS [i]","severityLevel":"Information","properties":{"commandText":"SELECT [i].[Id], [i].[ObjectName], [i].[ObjectType]\r\nFROM [Items] AS [i]","CategoryName":"Microsoft.EntityFrameworkCore.Database.Command","DeveloperMode":"true","commandType":"Text","{OriginalFormat}":"Executed DbCommand ({elapsed}ms) [Parameters=[{parameters}], CommandType='{commandType}', CommandTimeout='{commandTimeout}']{newLine}{commandText}","elapsed":"1","AspNetCoreEnvironment":"Development","commandTimeout":"30"}}}}
Microsoft.EntityFrameworkCore.Database.Command:Information: Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT [i].[Id], [i].[ObjectName], [i].[ObjectType]
FROM [Items] AS [i]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2019-02-28T08:48:17.5378799Z","tags":{"ai.internal.nodeName":"V00X6036","ai.operation.name":"GET /DataTaxonomyTool/Index","ai.application.ver":"1.0.0.0","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.cloud.roleInstance":"V00X6036","ai.location.ip":"127.0.0.1","ai.operation.id":"63f680a6-4a03a53f2cc95492","ai.operation.parentId":"|63f680a6-4a03a53f2cc95492."},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']\r\nSELECT [i].[Id], [i].[ObjectName], [i].[ObjectType]\r\nFROM [Items] AS [i]","severityLevel":"Information","properties":{"commandText":"SELECT [i].[Id], [i].[ObjectName], [i].[ObjectType]\r\nFROM [Items] AS [i]","CategoryName":"Microsoft.EntityFrameworkCore.Database.Command","DeveloperMode":"true","commandType":"Text","{OriginalFormat}":"Executed DbCommand ({elapsed}ms) [Parameters=[{parameters}], CommandType='{commandType}', CommandTimeout='{commandTimeout}']{newLine}{commandText}","elapsed":"1","AspNetCoreEnvironment":"Development","commandTimeout":"30"}}}}
Microsoft.EntityFrameworkCore.Database.Command:Information: Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT [i].[Id], [i].[ObjectName], [i].[ObjectType]
FROM [Items] AS [i]
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Message","time":"2019-02-28T08:48:17.5612991Z","tags":{"ai.internal.nodeName":"V00X6036","ai.operation.name":"GET /DataTaxonomyTool/Index","ai.application.ver":"1.0.0.0","ai.internal.sdkVersion":"aspnet5c:2.1.1","ai.cloud.roleInstance":"V00X6036","ai.location.ip":"127.0.0.1","ai.operation.id":"63f680a6-4a03a53f2cc95492","ai.operation.parentId":"|63f680a6-4a03a53f2cc95492."},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']\r\nSELECT [i].[Id], [i].[ObjectName], [i].[ObjectType]\r\nFROM [Items] AS [i]","severityLevel":"Information","properties":{"commandText":"SELECT [i].[Id], [i].[ObjectName], [i].[ObjectType]\r\nFROM [Items] AS [i]","CategoryName":"Microsoft.EntityFrameworkCore.Database.Command","DeveloperMode":"true","commandType":"Text","{OriginalFormat}":"Executed DbCommand ({elapsed}ms) [Parameters=[{parameters}], CommandType='{commandType}', CommandTimeout='{commandTimeout}']{newLine}{commandText}","elapsed":"1","AspNetCoreEnvironment":"Development","commandTimeout":"30"}}}}
Microsoft.EntityFrameworkCore.Database.Command:Information: Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT [i].[Id], [i].[ObjectName], [i].[ObjectType]
FROM [Items] AS [i]
查看组件getMethod:
public class LayoutListsViewComponent : ViewComponent
{
DOOR.Core.Web.Models.ReportContext _context;
public LayoutListsViewComponent(DOOR.Core.Web.Models.ReportContext context)
{
_context = context;
}
public IList<DOOR.Core.Web.Models.DataTaxonomy.Item> items { get; set; }
public async Task<IViewComponentResult> InvokeAsync()
{
var items = await _context.Items
.AsNoTracking()
.ToListAsync();
return View(items);
}
}
查看组件 Default.cshtml:
@model IEnumerable<DOOR.Core.Web.Models.DataTaxonomy.Item>
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
Layout = "~/Pages/DataTaxonomyTool/Layout/LayoutTaxonomy.cshtml";
}
@for (char c = 'A'; c <= 'Z'; c++)
{
<ul style="list-style:none">
<li class="nav-item">
<a class="nav-link" data-toggle="collapse" data-target="#@c.ToString().ToLower()">@c</a>
<div id="@c.ToString().ToLower()" class="collapse">
@foreach (var item in Model.OrderBy(x => x.ObjectName))
{
@if (item.ObjectName.StartsWith(c.ToString().ToLower()))
{
<ul style="list-style:none">
<li>@item.ObjectName</li>
</ul>
}
}
</div>
</li>
</ul>
}
布局:
@addTagHelper*,DOOR.Core.Web
<!DOCTYPE html>
<html>
...
<vc:layout-lists></vc:layout-lists>
...
解决方案
愚蠢的我 - 调用 Default.cshtml 时我忘记删除这部分:
@{
Layout = "~/Pages/DataTaxonomyTool/Layout/LayoutTaxonomy.cshtml";
}
我使用这个视图组件来获取相同布局中的一些数据。所以程序陷入了无限循环。
推荐阅读
- javascript - Handsontable 自动完成项目排序
- reactjs - 在 react-admin 中创建自定义表单
- c# - C#获取客户端IP地址Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
- java - 使用 Spring Data MongoRepository 进行更新查询的自定义方法
- sql - 在函数的while循环中插入查询
- c# - 统一更改 Texture2D 格式
- jsp - 如何将后台视频插入我的网站?
- swift - CoreMedia DAL 插件在 macOS 上通过 USB 中断 Internet 共享
- android - 如何将日期从一项活动传递到另一项活动?
- javascript - javascript中“”和“”的差异输出