簡體   English   中英

為什么 ASP.NET Core 重寫中間件沒有按預期運行?

[英]Why doesn't ASP.NET Core rewrite middleware behave as expected?

            var rewriteOptions = new RewriteOptions();;
            rewriteOptions.AddRewrite("\\/blog\\/[0-9]+", "/blog.html", true);
            app.UseRewriter(rewriteOptions);

我添加了這個中間件來進行 url 重寫,使 /blog/ 指向 html 頁面(此頁面中的 JS 將提取整數,然后對 JSON 發出適當的請求以獲取內容),但沒有發生重定向(應用程序的行為就好像規則不存在一樣)。 有什么問題?

我在重寫中間件之前和之后都添加了這個:

            app.Use(async (context, next) =>
            {
                Console.WriteLine(context.Request.Path + "\n");
                await next.Invoke();
            });

所以我知道之前的路徑是我所期望的,並且之后的路徑不會被重寫。

當我添加另一條規則時,第一條規則開始起作用。 經過進一步測試,似乎我添加的每條規則(最后一條除外)都按預期工作。

之后,我將上述重寫規則更改為:

rewriteOptions.AddRewrite("\\/blog-[0-9]+", "/blog.html", true);

現在它壞了(應用程序表現得好像規則不存在一樣),即使在它之后還有另一個規則。

我錯過了什么?

我找到了解決方案。 出於某種我不明白的原因,重寫中間件在針對正則表達式進行測試之前從 URL 中刪除了前面的“/”,因此一旦更新到預期這一點,正則表達式就可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM