我试图将我的所有ASP MVC HTTP响应标头更改为默认情况下具有另一个值,以便在我的博客应用程序中实现Pingback自动发现.
默认标头(在Cassini上)是:
Cache-Control private
Connection Close
Content-Length 20901
Content-Type text/html; charset=utf-8
Date Fri, 20 Apr 2012 22:46:11 GMT
Server ASP.NET Development Server/10.0.0.0
X-AspNet-Version 4.0.30319
X-AspNetMvc-Version 3.0
Run Code Online (Sandbox Code Playgroud)
我想要一个额外的增值:
X-Pingback: http://localhost:4912/pingback/xmlrpcserver
Run Code Online (Sandbox Code Playgroud)
我已经google了一下,找到了一个neet解决方案: - 从ActionFilterAttribute派生并覆盖OnResultExecuted方法:
public class HttpHeaderAttribute : ActionFilterAttribute
{
public string Name { get; set; }
public string Value { get; set; }
public HttpHeaderAttribute(string name, string value)
{
Name = name;
Value = value;
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Request.Headers.Add(Name, Value);
base.OnResultExecuted(filterContext); …Run Code Online (Sandbox Code Playgroud) MVC 3 RTM.我有一个返回文件的动作(image/jpeg).我试图为一个文件设置ETag没有成功(etag没有通过标题).我已经尝试了Response.Cache.SetETag和Response.AppenderHeader.如果我添加自己的自定义标头标签,它按预期工作,它似乎是我无法设置的ETag.
这是来源.
[HttpGet, OutputCache(Location= OutputCacheLocation.Client, VaryByParam="userId", Duration=3600, NoStore=true)]
public ActionResult GetImage(string userId)
{
byte[] result;
using (var client = new WebClient())
{
client.Credentials = CredentialCache.DefaultCredentials;
result = client.DownloadData(string.Format(IntranetUrl, userId));
}
Response.Cache.SetETag("00amyWGct0y_ze4lIsj2Mw");
//or Response.AppendHeader("ETag", "00amyWGct0y_ze4lIsj2Mw");
Response.AppendHeader("MyHeader", "HelloWorld");
return File(result, "image/jpeg");
}
Run Code Online (Sandbox Code Playgroud)
这是资源请求/响应:
> Request
> URL:http://localhost/MyApp/Employee.mvc/GetImage?userId=myUserId
> Request Method:GET Status Code:200 OK
> Request Headers Accept:*/*
> Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
> Accept-Encoding:gzip,deflate,sdch
> Accept-Language:en-US,en;q=0.8
> Cache-Control:max-age=0
> Connection:keep-alive
> Cookie:ASP.NET_SessionId=mySessionId
> Host:localhost
> Referer:http://localhost/MyApp/Employee/Review/24/Index
> User-Agent:Mozilla/5.0 (Windows; U;
> Windows NT …Run Code Online (Sandbox Code Playgroud) 我是一名网页设计师,通常设计公司网站,通常不需要更新.所以我想将输出缓存一天.我怎样才能做到这一点?
此外,还接受任何有关在慢速服务器上提高asp.net性能的建议.