Как перенаправить.Страницы ASPX на страницу .NET Core Razor

#asp.net #asp.net-core #razor #.net-core #razor-pages

#asp.net #asp.net-core #razor #.net-core #razor-страницы

Вопрос:

Мы перемещаем большую asp.net веб-сайт на сайт .NET Core Razor pages. По всему Интернету есть ссылки, которые указывают на наш сайт, и мы хотим, чтобы эти ссылки работали после нашей миграции. Мы сохраним тот же формат URL, но без расширения .aspx.

Итак, нам нужен наш старый URL:

example.com/item.aspx обрабатывается на странице .net core razor, как

example.com/item

Комментарии:

1. Одним из вариантов является создание обработчика промежуточного программного обеспечения. Смотрите weblog.west-wind.com/posts/2018/Apr/18 /… где он обрабатывает файлы .md с URL-адресами без расширения

Ответ №1:

Вы можете использовать промежуточное программное обеспечение для перезаписи URL, чтобы удалить расширения «.aspx».

Проверьте следующий код: Используйте AddRedirect для создания правила для перезаписи URL-адресов

     public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        //using Regex match the .aspx extension and remove it.
        var options = new RewriteOptions()
                .AddRedirect(@"(w*)(.aspx)", "$1");
        app.UseRewriter(options);

        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages(); 
        });
    }
  

Затем скриншот, подобный этому:

введите описание изображения здесь

Комментарии:

1. Спасибо, ZhiLv, я только добавлю, что я немного изменил регулярное выражение, чтобы разрешить более глубокие URL. like example.com/dictionary/the-item.aspx . var options = new RewriteOptions() .AddRedirect(@»(w */?[w*- ] )(.aspx)», «$ 1», 301);