在我的应用程序中,在ASP.NET MVC应用程序中启用ASP.NET跟踪后,时间计算统计信息被关闭了5000倍.
我有一个页面需要7到9秒才能加载.Firebug和IIS日志文件中的"time-taken"字段都证实了这一点.(这只是返回客户端的页面,而不是任何布局,DOM或脚本执行.)
但是,当我打开应用程序范围的跟踪(通过web.config)并查看跟踪输出时,从"Begin PreInit"到"End Render"的时间小于0.001秒.
我假设这是因为Trace.axd是在构建WebForms时考虑的,MVC绕过了传统的页面生命周期.
然而,即使我在OnActionExecuting/OnActionExecuted的开始和结束时添加自定义跟踪,时间仍然小于0.1秒.
有没有人知道在ASP.NET MVC中我需要挂钩才能让trace.axd输出报告准确的执行时间?
所以我很高兴今天早上正在开发一个大量使用自定义.xml配置文件的项目.
突然之间,每当我在解决方案资源管理器中双击.xml文件时,它都会在记事本中而不是在Visual Studio中打开.
认为这是Windows文件关联,我右键单击资源管理器中的文件,选择打开方式>>选择默认值,然后选择Visual Studio 2008.
但问题仍然存在 - 现在当我从资源管理器中打开文件时,Visual Studio打开,然后打开记事本.
毋庸置疑,这是非常令人沮丧的,谷歌并没有多大帮助.有没有其他人遇到过这个问题,你做了什么呢?
笔记:
我在Windows 7虚拟机中安装了IE9,并且很惊讶地看到这个用户代理:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ENUSMSNIP)
特别是,BOIE9和ENUSMSNIP的最后两个键看起来非常垃圾.我习惯于看到工具栏和加载项在用户代理的末尾注册自己,但这是在Windows 7的原始安装上,没有其他软件.
它们在注册表中定义:
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\PostPlatform
该密钥的值为IEAK,显然是Internet Explorer管理员工具包,根据Microsoft发送的自定义用户代理字符串.
我猜这BOIE9是代表"在IE9上的Bing".这是唯一有效的附加组件:
至于ENUSMSNIP,我很茫然.我的猜测是:
我尝试将我的语言环境更改为EN-GB,但用户代理没有更新也没有注册表.所以看起来它只是在安装时才重要(如果我对ENUS的态度是对的).
有谁知道这两个用户代理密钥代表什么?
或者,小心分享您的IE9用户代理是什么,也许我们可以将它们拼凑在一起?
我正在开发一个ASP.NET MVC项目,我已经开始考虑我的缓存策略了.我试图让我的框架尽可能开放用于缓存.
根据我在Scott Hanselman播客期间听到的内容,StackOverflow.com使用页面输出缓存并将内容拉链并将其放入RAM中.这听起来像是对用户范围的缓存非常有用,但对于像个性化页面这样的东西,你必须为每个用户缓存一个版本,并且可能很快失控.
所以,对于缓存策略.哪个应该使用,输出缓存,数据缓存还是组合?我的第一个想法是两者,但就缓存依赖性而言,它听起来有点复杂.
首先,我已阅读以下内容:
当我按F12或从工具菜单中选择"开发人员工具"时,没有任何反应.
问题不在于窗口是打开的,而是在屏幕外(它不会显示在任务栏或alt-tab中).此外,注册表中的任何地方都没有"IEDevTools"注册表项(我进行了搜索).
这是在用于兼容性测试的新安装的Windows XP VM上.
除了窗口位置和流氓注册表设置之外,还有其他原因导致开发人员工具无法显示吗?
我很难找到一个很好的ASP.NET MVC参考应用程序.通过"引用",我特指一个以Microsoft认可的方式弯曲所有框架功能的应用程序,例如:
那里的开源示例(CodeCampServer,SutekiShop)要么显着地添加到基础框架,要么不使用所有的烘焙功能.
问候!
我创建了一个APSX Web表单,它根据一些提供的参数返回一个远程图像.它可以像这样使用:
<img src="/ImageGetter.aspx?param1=abc¶m2=123" />
Run Code Online (Sandbox Code Playgroud)
ImageGetter.aspx的标记和代码看起来类似于:
<%@ OutputCache Duration="100000" VaryByParam="*" Location="ServerAndClient" %>
<%@ Page Language="C#" AutoEventWireup="false" EnableSessionState="False" CodeBehind="ImageGetter.aspx.cs" Inherits="ACME.Helpers.ImageGetter" %>
Run Code Online (Sandbox Code Playgroud)
此代码在ImageGetter.aspx的Page_Load方法中调用:
byte[] data = null;
Dictionary<string, string> file_locations = GetImageLocations(param1, param2);
try
{
data = new WebClient().DownloadData(file_locations["main"]);
}
catch (WebException wex)
{
try
{
data = new WebClient().DownloadData(file_locations["backup"]);
}
catch (Exception e)
{
throw;
}
}
Response.ContentType = "image/jpeg";
Response.OutputStream.Write(data, 0, data.Length);
Response.End();
Run Code Online (Sandbox Code Playgroud)
从我的测试来看,它似乎不是缓存.这可能与输出缓存有关,还是应该根据查询字符串参数编写自己的缓存来存储字节数组?
似乎我在这个主题上所看到的一切都要么自发布以来发生了变化,要么与彼此截然不同.
我只是想在我的视图中创建一个简单的表单.
我应该使用Html.BeginForm()/ TextBox()/ EndForm()方法还是应该使用普通的HTML表单?哪个更受欢迎?
这是我到目前为止:
<%=Html.BeginForm("Create", "Product", FormMethod.Post); %>
<%=Html.TextBox("productTextBox", "Enter a shoe name"); %>
<input type="submit" name="createButton" value="Create Me!" />
<%=Html.EndForm(); %>
Run Code Online (Sandbox Code Playgroud)
在ASP.NET MVC中使用按钮和文本框创建简单表单的"正确"方法是什么,并允许我将表单中的数据提交到/ Product/Create操作?
然后,我如何从该方法中访问表单数据?有些人似乎使用"FormCollection"而其他人只是使用Request.Form方法.我应该使用哪种方式?
有人可以开导我吗?
我正在试图让AttributeExchange或SimpleRegistration使用3.2.0.9257版本的DotNetOpenAuth.
这就是我所做的:
这些更改都在UserController的Authenticate方法中.
我换了第44行,
return openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult();
Run Code Online (Sandbox Code Playgroud)
以下内容:
var request = openid.CreateRequest(Request.Form["openid_identifier"]);
// Add SimpleRegistration requests for Email and FullName
var sr = new ClaimsRequest();
sr.Email = DemandLevel.Request;
sr.FullName = DemandLevel.Request;
request.AddExtension(sr);
// Add AttributeExchange requests for Email and FullName
var ax = new FetchRequest();
ax.Attributes.Add(new AttributeRequest(WellKnownAttributes.Contact.Email));
ax.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.FullName));
request.AddExtension(ax);
return request.RedirectingResponse.AsActionResult();
Run Code Online (Sandbox Code Playgroud)
(我还添加了DotNetOpenAuth.OpenId.Extensions.AttributeExchange和DotNetOpenAuth.OpenId.Extensions.SimpleRegistration命名空间.)
然后,在"阶段3认证"之后的同一方法中,我尝试获得响应:
var sr = response.GetExtension<ClaimsResponse>();
var ax = response.GetExtension<FetchResponse>();
Run Code Online (Sandbox Code Playgroud)
但是,这些响应始终为空.我试过谷歌,雅虎和MyOpenID.在所有情况下,身份验证都能正常运行,但不会返回SimpleRegistration或AttributeExchange数据.
我究竟做错了什么?
可能重复:
Facebook Sharer如何选择图像?
当我在我的网站上添加一个Facebook链接时,它会从网站上随机拾取大型图片,并不完全依附于故事.如何控制Facebook拍摄的图像?
asp.net-mvc ×5
asp.net ×2
caching ×2
outputcache ×2
architecture ×1
c# ×1
facebook ×1
html ×1
interface ×1
openid ×1
tagging ×1
trace ×1
user-agent ×1