我的情景似乎很常见,但到目前为止我还没有找到好的解决方案.因此,ASP.NET-MVC应用程序与MSSQL数据库位于后端.该模型包括带有字符串字段描述的A类,需要限制为100个字符.它声明如下:
[StringLength(100)]
public virtual string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)
数据库中的相应列是nvarchar,列长度= 100.在UI中,Description字段由textarea表示,maxlength = 100.
现在问题来自textarea中的换行符.它们在客户端被解释为1个字符,但在服务器端它们由Environment.NewLine表示,它是2个字符(\ r \n).所以它超过了数据库列的长度(实际上服务器端验证在整个后端之前失败了,但为了简单起见,我们省略了验证).
我到目前为止找到的解决方案是:
我想除了这三个之外还应该有别的东西.
我通过以下方式在自定义HTTP处理程序中使用输出缓存:
public void ProcessRequest(HttpContext context)
{
TimeSpan freshness = new TimeSpan(0, 0, 0, 60);
context.Response.Cache.SetExpires(DateTime.Now.Add(freshness));
context.Response.Cache.SetMaxAge(freshness);
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetValidUntilExpires(true);
...
}
Run Code Online (Sandbox Code Playgroud)
它可以工作,但问题是用F5刷新页面导致页面重新生成(而不是缓存使用),尽管最后一个代码行:
context.Response.Cache.SetValidUntilExpires(true);
Run Code Online (Sandbox Code Playgroud)
有什么建议?
UPD:似乎问题的原因是HTTP处理程序响应不在服务器上缓存.以下代码适用于Web表单,但不适用于处理程序:
Response.Cache.SetCacheability(HttpCacheability.Server);
Run Code Online (Sandbox Code Playgroud)
是否有一些在服务器上缓存http处理程序响应的细节?