我注意到我网站上的一些地方与第三方资源交谈。我已经看到了一些建议(例如,MSDN Magazine: Asynchronous Pages in ASP.NET 2.0),这些代码应该异步运行,只是为了避免使线程池饱和。假设我引入了几个这样的函数:
public static void LoadThirdPartyInfo(/*Arguments*/)
{
Page page = (Page) HttpContext.Current.CurrentHandler;
if(page.IsAsync)
{
page.AddOnPreRenderCompleteAsync( //...
}
else
{
//Oops...
}
}
此时,我可以:
1.删除(或保留)else子句并尝试小心只在异步页面上调用它,可能添加一些日志记录以检测何时不正确地执行此操作。
2.与#1相同,但在新页面上使用Async="True"
3.与#1相同,但在所有页面上使用Async="True"
。
我不确定引入不必要的Page Async指令是否存在风险。他们似乎 无法打破任何事情。
问题:引入虚假异步指令是否可以?
注意:我使用的是.Net 4.0,但我们可以针对.Net 4.5进行回复。
答案 0 :(得分:2)
只需将 Async = true 添加到页面而不激活任何特定于异步的代码路径就可以了。这样做会导致轻微的性能损失。罚款通常是微不足道的,但在您做出任何改变之后再次测试您的网站可能是一个好主意,以确保没有任何退步。