معادلهای چندسکویی اجزای فایل web.config در ASP.NET Core
نویسنده: وحید نصیری
تاریخ: ۱۳۹۵/۱۱/۰۶ ۱۱:۲۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
PM> Install-Package Microsoft.AspNetCore.ResponseCompression
{
"dependencies": {
"Microsoft.AspNetCore.ResponseCompression": "1.0.0"
}
} public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression(options =>
{
options.MimeTypes = Microsoft.AspNetCore.ResponseCompression.ResponseCompressionDefaults.MimeTypes;
});
} namespace Microsoft.AspNetCore.ResponseCompression
{
/// <summary>
/// Defaults for the ResponseCompressionMiddleware
/// </summary>
public class ResponseCompressionDefaults
{
/// <summary>
/// Default MIME types to compress responses for.
/// </summary>
// This list is not intended to be exhaustive, it's a baseline for the 90% case.
public static readonly IEnumerable<string> MimeTypes = new[]
{
// General
"text/plain",
// Static files
"text/css",
"application/javascript",
// MVC
"text/html",
"application/xml",
"text/xml",
"application/json",
"text/json",
};
}
} services.AddResponseCompression(options =>
{
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[]
{
"image/svg+xml",
"application/font-woff2"
});
}); services.AddResponseCompression(options =>
{
//If no compression providers are specified then GZip is used by default.
//options.Providers.Add<GzipCompressionProvider>(); services.Configure<GzipCompressionProviderOptions>(options =>
{
options.Level = System.IO.Compression.CompressionLevel.Optimal;
}); options.EnableForHttps = true;
public void Configure(IApplicationBuilder app)
{
app.UseResponseCompression() // Adds the response compression to the request pipeline
.UseStaticFiles(); // Adds the static middleware to the request pipeline
} <staticContent> <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" /> </staticContent>
public void Configure(IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
app.UseResponseCompression()
.UseStaticFiles(
new StaticFileOptions
{
OnPrepareResponse =
_ => _.Context.Response.Headers[HeaderNames.CacheControl] =
"public,max-age=604800" // A week in seconds
})
.UseMvc(routes => routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"));
} PM> Install-Package Microsoft.AspNetCore.Rewrite
{
"dependencies": {
"Microsoft.AspNetCore.Rewrite": "1.0.0"
}
} public void Configure(IApplicationBuilder app)
{
app.UseRewriter(new RewriteOptions()
.AddRedirectToHttps()
.AddRewrite(@"app/(\d+)", "app?id=$1", skipRemainingRules: false) // Rewrite based on a Regular expression
//.AddRedirectToHttps(302, 5001) // Redirect to a different port and use HTTPS
.AddRedirect("(.*)/$", "$1") // remove trailing slash, Redirect using a regular expression
.AddRedirect(@"^section1/(.*)", "new/$1", (int)HttpStatusCode.Redirect)
.AddRedirect(@"^section2/(\\d+)/(.*)", "new/$1/$2", (int)HttpStatusCode.MovedPermanently)
.AddRewrite("^feed$", "/?format=rss", skipRemainingRules: false)); app.UseRewriter(new RewriteOptions() .AddIISUrlRewrite(env.ContentRootFileProvider, "web.config") .AddApacheModRewrite(env.ContentRootFileProvider, ".htaccess"));
public class RedirectWwwRule : Microsoft.AspNetCore.Rewrite.IRule
{
public int StatusCode { get; } = (int)HttpStatusCode.MovedPermanently;
public bool ExcludeLocalhost { get; set; } = true;
public void ApplyRule(RewriteContext context)
{
var request = context.HttpContext.Request;
var host = request.Host;
if (host.Host.StartsWith("www", StringComparison.OrdinalIgnoreCase))
{
context.Result = RuleResult.ContinueRules;
return;
}
if (ExcludeLocalhost && string.Equals(host.Host, "localhost", StringComparison.OrdinalIgnoreCase))
{
context.Result = RuleResult.ContinueRules;
return;
}
string newPath = request.Scheme + "://www." + host.Value + request.PathBase + request.Path + request.QueryString;
var response = context.HttpContext.Response;
response.StatusCode = StatusCode;
response.Headers[HeaderNames.Location] = newPath;
context.Result = RuleResult.EndResponse; // Do not continue processing the request
}
} app.UseRewriter(new RewriteOptions().Add(new RedirectWwwRule()));
var options = new RewriteOptions().Add(app.ApplicationServices.GetService<RedirectWwwRule>());