我正在明确提到禁用浏览器缓存页面所需的ASP.NET代码.有很多方法可以影响HTTP标头和元标记,我得到的印象是需要不同的设置才能使不同的浏览器正常运行.获得一个评论的参考位以表明哪些适用于所有浏览器以及哪些适用于特定浏览器(包括版本)是非常好的.
关于这个问题有大量的信息,但我还没有找到一个很好的参考资料来描述每种方法的好处,以及某种技术是否已被更高级别的API取代.
我对ASP.NET 3.5 SP1特别感兴趣,但同样可以获得早期版本的答案.
此博客文章Firefox和IE缓存之间的两个重要差异描述了一些HTTP协议行为差异.
以下示例代码说明了我感兴趣的内容
public abstract class NoCacheBasePage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
DisableClientCaching();
}
private void DisableClientCaching()
{
// Do any of these result in META tags e.g. <META HTTP-EQUIV="Expire" CONTENT="-1">
// HTTP Headers or both?
// Does this only work for IE?
Response.Cache.SetCacheability(HttpCacheability.NoCache);
// Is this required for FireFox? Would be good to do this without magic strings.
// Won't it overwrite the previous setting
Response.Headers.Add("Cache-Control", "no-cache, no-store"); …Run Code Online (Sandbox Code Playgroud) 我们使用优秀的ELMAH来处理ASP.NET 3.5 Web应用程序中的未处理异常.除了使用REST功能使用的WCF服务之外,这对于所有站点都非常有效.当应用程序代码未处理的操作方法中发生异常时,WCF会以各种方式处理它,具体取决于服务协定和配置设置.这意味着该异常不会最终触发ELMAH使用的ASP.NET HttpApplication.Error事件.我知道要处理的两个解决方案是:
第一个选项非常简单,但并不完全是DRY.第二个选项仅要求您在实现属性和ErrorHandler后使用自定义属性装饰每个服务.我是根据Will的工作完成的,但我想在发布代码之前验证这是正确的方法.
有没有更好的方法让我错过了?
在MSDN documenation为IErrorHandler说,的HandleError方法是做记录的地方,但ELMAH访问HttpContext.Current.ApplicationInstance,即使HttpContext.Current可用,在此方法中为null.在ProvideFault方法中调用Elmah是一种解决方法,因为ApplicationInstance已设置,但这与API文档中描述的意图不匹配.我在这里错过了什么吗?文档确实声明您不应该依赖于在操作线程上调用的HandleError方法,这可能是ApplicationInstance在此范围内为空的原因.
如何禁用SqlMembershipProvider的帐户锁定功能?
MaxInvalidPasswordAttempts属性的MSDN文档未指定如何禁用它.如果我找不到正确的方法,我会将maxInvalidPasswordAttempts属性设置为int的最大值,这可以有效地实现相同的结果.
我很清楚,禁用帐户锁定不是最好的主意,但我需要在短期内实现这一目标.
我已经使用VS2010 SP1升级到iis express 7.5.在发行说明中,它指定express能够在没有管理员权限的情况下运行.当我尝试从命令行(powershell cmd行)运行时,我收到相同的"访问被拒绝"错误(如下所示)我正在运行IIS Express 7.
据我所知,仍然需要管理员权限.
任何人都能够没有管理员权限运行?
详细的错误消息是:
Failed to call HttpAddUrl with http://MACHINE-NAME:80/
Failed to register URL "http://MACHINE-NAME:80/" for site "WebSiteName" application "/". Error description: Access is denied. (0x80070005)
Run Code Online (Sandbox Code Playgroud) 我正在使用TFS与VS2008和VS2010,在TFS集合中我有几个项目.
我已经将TFS根映射到本地驱动器以保留TFS文件夹结构,并且我已经完成了几个子文件夹的Get Latests.
我还下载了一个不需要的文件夹,所以我删除了本地文件夹内容,但现在在TFS中,我看到该文件夹为黑色,"最新"是.如何告诉TFS我已经在本地删除了我之前下载的文件夹?
在Visual Studio 2010中,我能够从中查看特定用户的签入历史记录
Team Explorer -> Team Project -> Team Members -> Right-click on a user name -> Show Check-in History.
在激烈的Team Explorer UI重新设计之后,我在Visual Studio 2012/2013中找不到这样的选项.
我正在运行SQL-2008 R2 Server.
通常当我编写查询时,我会得到一个完整的IntelliSense,显示我的数据库中的所有对象.
但是现在当我执行任务时,它没有显示任何智能感知.相反,当我写对象名称时,它表明对象无效!但是,运行Query会得到正确的结果.
我关闭了管理工作室并重新启动它.现在一切正常.
我想知道实际上是错的.有任何想法吗?
我正在使用Microsoft WebMatrix 2来处理简单的ASP.NET WebPages站点.当您在" 文件"视图中时,有一个Visual Studio启动按钮,该按钮应该在Visual Studio 2012中打开站点解决方案.在我的机器上,我也安装了Visual Studio 2010,这是我点击按钮时打开的版本.

如何确保Visual Studio 2012已打开?
我正在使用Windows 8,但我很确定这也适用于Windows 7和XP.我怀疑我可能在2010年之前安装了2012,这可能解释了我的机器是如何进入这种状态但我不记得的.
registry visual-studio webmatrix visual-studio-2012 webmatrix-2
我有一个不受信任的Silverlight 5.1.10411.0 Out-of-Browser应用程序,我试图使用App.Current.MainWindow.Close方法关闭应用程序.根据文档,如果满足以下条件之一,我只能使用此机制:
在我试图让它工作的过程中,我保持了非常简单的操作,并且直接在按钮单击事件处理程序后面的代码中调用方法,如下所示,但它没有任何效果.
void closeButton_Click(object sender, RoutedEventArgs e)
{
var mainWindow = Application.Current.MainWindow;
mainWindow.Close();
}
Run Code Online (Sandbox Code Playgroud)
当我附加调试器并设置"抛出异常时中断"时,我可以看到异常
SecurityException:除非应用程序具有提升的权限,或者通过用户启动的操作调用了代码,否则不允许访问属性或方法调用.
有什么想法为什么我的代码不被视为用户启动的操作?
我已经尝试在XAML和代码隐藏中附加事件处理程序(不是同时)
<Button x:Name="closeButton" Content="Close" Click="closeButton_Click" />
Run Code Online (Sandbox Code Playgroud)
要么
closeButton.Click += closeButton_Click;
Run Code Online (Sandbox Code Playgroud)
没有成功.我已经非常仔细地阅读了用户启动的事件文档,并且无法理解为什么我的代码不被视为用户启动.我已经在调试和发布模式以及没有成功附加调试器时尝试了这一点.如果我将"在浏览器外部运行时需要提升的信任"更改为true,则close调用将按预期工作.
我已经重新定义了我的应用程序要求来解决这个问题,但我真的想了解我做错了什么;-)
更新:SonOfPirate的回答表明这种方法的文档不准确,但我不相信.使用反射工具dotPeek抛出异常的方法是
private void CheckForPermissions()
{
if (!Application.Current.HasElevatedPermissions && !XcpImports.IsUserInitiatedAction() && Application.Current.ApplicationStarted)
throw new SecurityException(Resx.GetString("Window_AccessNotAllowed"));
}
Run Code Online (Sandbox Code Playgroud)
我觉得这是一个有点混乱读,所以我一直嘲笑的代码,写它的单元测试见下面的要点,正如你可以从结果看,我应该能够从不受信任的应用程序调用Close,只要它是用户启动.

安全异常消息
除非应用程序具有提升的权限,或者通过用户启动的操作调用了代码,否则不允许访问属性或方法调用.
也表明它应该是可能的,所以我回到了这个问题 - 为什么这个代码不被认为是用户启动的?
我正在尝试使用Kendo UI Grid的columns.headerTemplate功能来自定义列标题.您可以使用此功能,如下所示,并由我创建的此示例演示.通常在使用Kendo UI模板时,窗口小部件会将实体传递给模板函数,因此您可以使用各种属性来自定义要呈现的html.
调试Kendo UI网格代码我可以看到,在_headerCellText方法中,即使列对象在范围内,对模板函数的调用也会传入一个空对象而不是列.
text = kendo.template(template, settings)({});
在为每个列使用自定义列标题模板之前是否还有其他方法可以采用 - 或者更糟糕的是jQuery操作窗口小部件呈现DOM?
是否有充分理由偏离此用例框架中的通用模板模式?
// Example kendoGrid use of column.headerTemplate
var templateFunction = function(shouldBeColumn) {
// shouldBeColumn is an empty object rather than the column object
return "Useless object:" + kendo.stringify(shouldBeColumn);
};
$("#grid").kendoGrid({
dataSource: {
data: products,
pageSize: 20
},
height: 550,
scrollable: true,
columns: [
{ field: "ProductName", title: "Product Name" },
{ field: "UnitPrice", title: "Unit …Run Code Online (Sandbox Code Playgroud) asp.net ×3
browser ×1
caching ×1
elmah ×1
exception ×1
http ×1
iis-express ×1
javascript ×1
kendo-grid ×1
kendo-ui ×1
logging ×1
membership ×1
permissions ×1
registry ×1
silverlight ×1
sql ×1
ssms ×1
telerik ×1
tfs ×1
undo ×1
wcf ×1
webmatrix ×1
webmatrix-2 ×1