@Aristos 'जवाब WebForms के लिए काम करेंगे, लेकिन उसकी मदद के साथ, मैं ASP.NET/MVC पद्धति से अधिक इनलाइन एक समाधान अनुकूलित है। web.config का उपयोग कर gzipping से
public class NoGzipAttribute : Attribute {
}
रोकें IIS7:
public class GzipFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var context = filterContext.HttpContext;
if (filterContext.Exception == null &&
context.Response.Filter != null &&
!filterContext.ActionDescriptor.IsDefined(typeof(NoGzipAttribute), true))
{
string acceptEncoding = context.Request.Headers["Accept-Encoding"].ToLower();;
if (acceptEncoding.Contains("gzip"))
{
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
context.Response.AppendHeader("Content-Encoding", "gzip");
}
else if (acceptEncoding.Contains("deflate"))
{
context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
context.Response.AppendHeader("Content-Encoding", "deflate");
}
}
}
}
NoGzip
विशेषता बनाएँ:
gzipping सुविधा प्रदान करने के एक नया फ़िल्टर बनाएं
<system.webServer> ... <urlCompression doStaticCompression="true" doDynamicCompression="false" /> </system.webServer>
Global.asax.cs में अपने वैश्विक फिल्टर रजिस्टर:
public class MyController : AsyncController
{
[NoGzip]
[NoAsyncTimeout]
public void GetProgress(int id)
{
AsyncManager.OutstandingOperations.Increment();
...
}
public ActionResult GetProgressCompleted()
{
...
}
}
पी.एस.:
protected void Application_Start()
{
...
GlobalFilters.Filters.Add(new GzipFilter());
}
अंत में, NoGzip
विशेषता का उपभोग एक बार फिर, उनके सहायक विचार और समाधान के लिए @ एरिस्टोस के लिए बहुत धन्यवाद।
स्रोत
2011-04-13 23:44:07
आपकी मदद के लिए धन्यवाद। मैंने अपने उत्तर में दिए गए समाधान को बनाने के लिए आपके मार्गदर्शन का उपयोग किया है। –