小编Kei*_*ith的帖子

.Net的Web应用程序测试(WatiN测试记录器)

我一直在使用WatiN作为我当前项目的测试工具.除了测试记录器的小错误之外,我已经能够使用它并与NUnit一起自动化我的大量测试.在那里有其他人有经验使用他们可能建议的不同工具吗?

.net watin automated-tests

7
推荐指数
1
解决办法
6931
查看次数

asp:ContentPlaceHolder和代码块问题

当内容占位符包含任何代码块时,它会报告控件集合为空.

例如:

MasterPage.aspx

<asp:ContentPlaceHolder ID="Content1" runat="server" />
<asp:ContentPlaceHolder ID="Content2" runat="server" />

<div>Content1: <%= Content1.Controls.Count %></div>
<div>Content2: <%= Content2.Controls.Count %></div>
Run Code Online (Sandbox Code Playgroud)

APage.aspx

<asp:Content ContentPlaceHolderID="Content1" runat="server">
    Plain text content.
</asp:Content>

<asp:Content ContentPlaceHolderID="Content2" runat="server">
    <%= "Code block content." %>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

这将呈现以下内容:

纯文本内容.代码块内容.

内容1:1

内容2:0

为什么母版页的ContentPlaceHolder.Controls集合为空?

我想检查是否已填充ContentPlaceHolder(另请参阅此问题)但如果​​它包含任何<%=块则不能.

有没有人知道这方面的方法?

asp.net asp.net-mvc master-pages

7
推荐指数
1
解决办法
2361
查看次数

将MVC迷你探查器时序转换为异步任务

我在页面中运行了一个长时间运行的SQL查询,我使用异步任务加速了:

using System.Threading.Tasks;
...

var asyncTask = new Task<ResultClass>(
    () =>
    {
        using (var stepAsync = MiniProfiler.Current.Step("Async!"))
        {
            // exec long running SQL
        }
    });

asyncTask.Start();

// do lots of other slow stuff

ResultClass result;
using (var stepWait = MiniProfiler.Current.Step("Wait for Async"))
{
    result = asyncTask.Result;
}
Run Code Online (Sandbox Code Playgroud)

(请注意,这句法将是一个要好很多,一旦C#5出来与asyncawait)

当使用MVC mini profiler时,我得到了"等待异步"的时间,但我无法得到"异步!"的时间.步.

有没有办法将这些结果(可能只是SQL时间)纳入已完成页面的跟踪中?

更新

我找到了一种方法来让探查器步骤进入异步方法:

var asyncTask = new Task<ResultClass>(
    profiler =>
    {
        using (var step = (profiler as MiniProfiler).Step("Async!"))
        {
            // exec long running SQL
        } …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous mvc-mini-profiler

7
推荐指数
1
解决办法
2895
查看次数

Google Chrome 中的 DOM 过载问题

在 Google Chrome 中使用大量隐藏项目时遇到一些问题。

最近,我发布了一个很多人认为晦涩难懂的问题,很快就被关闭了。我找到了这个问题的原因,但到目前为止我不知道如何解决它。

有时在开发页面时,会使用一种方法,即预先创建一些元素并隐藏,然后在必要时显示。

所以此类元素的数量会极大地影响浏览器的响应速度。假设我们有以下代码:

var elem = document.getElementsByClassName ('Founder') [0];
var parent = document.getElementsByClassName ('Cloud') [0];
var empty = document.getElementsByClassName ('empty') [0];
for (var i = 0; i <50000; i ++) {
var clone = elem.cloneNode (true);
    // var clone = empty.cloneNode (true);
clone.style.display = 'none';
        parent.appendChild (clone);
    }
Run Code Online (Sandbox Code Playgroud)
<div class = 'Cloud'>
<input class = 'Founder' type = 'text'>
<div class = 'empty'> </div>
</div>
Run Code Online (Sandbox Code Playgroud)

因此,当我在 Firefox(67.0(64 位))中启动它时,没有特殊的刹车。但是当我在 Chrome 版本 74.0.3729.169(官方版本)(64 位)中运行它时,我得到了强大的刹车。 …

html javascript dom

7
推荐指数
1
解决办法
1213
查看次数

IE中的表的jQuery UI性能问题

我在获取UI代码以便在IE中完成任务时遇到问题.

我有一张桌子 - 价值矩阵.每个单元格可以为空或包含项目列表.

我希望用户能够在单元格之间拖动项目.

所以我的HTML看起来像这样:

<table>
    <tr><td></td><th scope="col">col 1</th><th scope="col">col 2</th></tr>
    <tr><th scope="row">row 1</th>
        <td class="droppable-cell">
            <div class="draggable-item">item A</div>
            <div class="draggable-item">item B</div>
        </td>
        <td class="droppable-cell"></td>
    </tr>
    <tr><th scope="row">row 2</th>
        <td class="droppable-cell"></td>
        <td class="droppable-cell">
            <div class="draggable-item">item C</div>
            <div class="draggable-item">item D</div>
        </td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

然后我使用jQuery 1.3.1和jQuery UI 1.6rc6:

$j('.draggable-item').each(function()
{
    $j(this).draggable({
       addClasses: false,
       revert: true, 
       zIndex: 2000,
       cursor: 'move'
    });
});

$j('.droppable-cell').each(function()
{
    $j(this).droppable({
        addClasses: false,
        activeClass: 'droppable-cell-candrop',
        hoverClass: 'droppable-cell-hover',
        tolerance: 'pointer',

        drop: function(event, ui)
        {
            //function to save change
        }); …
Run Code Online (Sandbox Code Playgroud)

performance jquery internet-explorer jquery-ui dhtml

6
推荐指数
1
解决办法
5804
查看次数

GetSchemaTable()如何工作?

OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();
Run Code Online (Sandbox Code Playgroud)

GetSchemaTable()工作怎么样?

它在RDBMS中从何处获取信息?

c# oledbdatareader getschematable

6
推荐指数
1
解决办法
3543
查看次数

首次调用页面上的Url.Action很慢

我有一个相当简单的ASP.MVC视图的性能问题.

这是一个几乎是即时的登录页面,但需要大约半秒钟.

经过大量挖它看起来像这个问题是第一次调用的Url.Action-它采取围绕450ms(根据MiniProfiler),但似乎出奇的慢.

随后的调用时间Url.Action<1ms,这更符合我的预期.

这是我使用的是否是一致的Url.Action("action", "controller")Url.Action("action"),但似乎并没有,如果我使用的情况发生Url.Content("~/controller/action").我打电话时也会发生这种情况Html.BeginForm("action").

有谁知道是什么导致了这个?

一挖成认为,RouteCollection.GetVirtualPath可能是罪魁祸首,因为这是常见的两种Url.ActionHtml.BeginForm.但是,肯定是在整个地方都使用了?我的意思是,½秒太慢了.

我有20个左右的自定义路由(它是一个相当大的应用程序,带有一些遗留的WebForms页面),但即便如此,时间似乎太慢了.

任何想法如何解决它?

asp.net-mvc performance urlhelper route-constraint

6
推荐指数
1
解决办法
3172
查看次数

检查是否支持Javascript删除功能

在Javascript中,您可以delete使用对象属性:

var o = { x: 1, y: 2 };

var wasDeleted = delete o.x;
Run Code Online (Sandbox Code Playgroud)

现在o.x应该是undefined,现在wasDeletedtrue

但是,您只能删除本机对象,不幸的是,浏览器对此似乎有不同的想法:

window.x = 1;

delete window.x;
Run Code Online (Sandbox Code Playgroud)

现在在Chrome和IE9-10 x中将是undefined,但在IE6-8中将引发异常:

“对象不支持此操作”

大。请注意,这并非delete不受支持...

// Oops, no var, so this is now a global, should've 'use strict'
o = { x: 1, y: 2 };

// Works
delete o.x;

// Works
delete window.o.y;

// Fails, but only in IE6-8 :-(
delete window.o
Run Code Online (Sandbox Code Playgroud)

我意识到我可以添加一个 …

javascript cross-browser ecmascript-5 browser-feature-detection

6
推荐指数
1
解决办法
2109
查看次数

我应该每次打开一个IDBDatabase还是保持一个实例打开?

我有一个SPA应用程序,将进行多次读/写IndexedDB.

打开DB是一个带回调的异步操作:

var db; 
var request = window.indexedDB.open("MyDB", 2);

request.onupgradeneeded = function(event) { 
    // Upgrade to latest version...
}

request.onerror = function(event) { 
    // Uh oh...
}

request.onsuccess = function(event) {
    // DB open, now do something
    db = event.target.result;
};
Run Code Online (Sandbox Code Playgroud)

我可以通过两种方式使用此db实例:

  1. db在页面/ SPA的生命周期中保留一个实例?
  2. db.close()当前操作完成后调用并在下一次操作中打开一个新操作?

这两种模式都存在缺陷吗?保持indexedDB开放是否有任何风险/问题?每个open动作是否有开销/延迟(超过可能的升级)?

javascript indexeddb

6
推荐指数
2
解决办法
736
查看次数

使用 Kestrel 时发生的 .NET 6 Web 应用程序崩溃

我有一个 .NET 6 Web 应用程序,在使用 Kestrel 时间歇性崩溃:

System.Net.Sockets.SocketException (995): The I/O operation has been aborted because of either a thread exit or an application request.
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketAwaitableEventArgs.<GetResult>g__ThrowSocketException|5_0(SocketError e)
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketAwaitableEventArgs.GetResult(Int16 token)
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketConnection.DoReceive()
   at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
   at System.IO.Pipelines.Pipe.GetReadAsyncResult()
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication`1 application)
         at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketAwaitableEventArgs.<GetResult>g__ThrowSocketException|5_0(SocketError e)
         at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketAwaitableEventArgs.GetResult(Int16 token)
         at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketConnection.DoReceive()
         at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
         at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication`1 application)
Microsoft.AspNetCore.Server.Kestrel: Warning: Connection processing ended abnormally.
Run Code Online (Sandbox Code Playgroud)

我无法可靠地导致它发生,但它最终总是会发生,通常是在跑步 5-20 分钟后。Web 应用程序完全停止运行,这是我们可以从任何日志记录中获取的最后一条消息。

这看起来像是某种套接字连接错误,但它发生在本地计算机上,并且在附加 VSCode 或 VS2022 调试器时发生。

整个堆栈都指向 Microsoft 代码,其中没有任何部分指向我们应用程序中的代码。

知道从哪里开始解决这个问题吗?可能是什么原因造成的?

asp.net kestrel-http-server .net-6.0

6
推荐指数
1
解决办法
892
查看次数