欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.Net站點設置多個路由對應同一個Action

 更新時間:2022年07月22日 09:14:55   作者:奮斗的大橙子  
這篇文章介紹了.Net站點設置多個路由對應同一個Action的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

需求:有些瀏覽器會屏蔽帶有Ad字樣的路徑,此時需要創(chuàng)建多個路由指向同一個Action。

例如:

原來:http://lalalalalala.org:1506/api/advert/common 現(xiàn)在需要增加另一個請求路徑 http://lalalalalala.org:1506/api/guanggao/common

1、.Net Core中追加這樣的路徑比較簡單,如下

只需要增加在Controller和Action增加Route特性標簽,便能得到下面四個路徑,然后他們指向的都是Get方法. 可以在swagger中查看:

2. 在DotNet Freamwork項目下:

某個系統(tǒng)是webapi 1,不具有特性路由功能,所以不能像.net core 一樣通過加標簽的方式進行重命名。

方法一:可以參考下面的解決方式,我在注冊路由的地方,將需要進行增加路由的方法,都增加了一個配置。

在swagger中查看的效果如下:

方法二:升級成webapi2,然后使用特性路由方式。

1.升級【webapi 1】到【W(wǎng)ebApi 2】,如下升級到最新

其中不升級 WebHost 會出現(xiàn)下面的異常

2.手動添加特性路由的配置代碼,如下圖,添加如下代碼到默認的路由上面: config.MapHttpAttributeRoutes();

* 這里注意下,特性路由要在普通路由規(guī)則上面。

如果把特性路由放在默認路由的下面,編譯不會出錯,但是在運行時候就會出現(xiàn)找不到Action 的問題,如下圖:

{

"Message": "找不到與請求 URI“http://localhost:21094/api/Default2/Get?id=2”匹配的 HTTP 資源。",

"MessageDetail": "未找到與名為“Default2”的控制器匹配的類型。"

}

3.開始修改controller

通過 ~/api/xxx/yyy 可以重寫路由前綴

補充:Webapi2 里面跨域問題

在第二步升級了webapi之后,在前端請求的時候,會出現(xiàn)跨域問題。解決可以參考我下面的做法:

1.升級或者安裝nuget

然后在配置的地方添加如下代碼: config.EnableCors();

config.EnableCors() 里面可以指定 跨域的Domain、Header以及Methond ,但是廣告系統(tǒng)原來在web.config進行了設置,所以這里啟用一下就可以了。

啟動程序此時還是會出現(xiàn)一個問題:

當前端使用Ajax進行跨域請求的時候,會先試探性的發(fā)一個Option請求,然后得到對應的跨域信息,如上面紅框中的配置。 當發(fā)現(xiàn)允許請求的時候,此時就進行下一步真實的請求。

問題在于這個Option請求返回Code要是200,前端才認為是正常的。但是直接升級webapi之后,Option請求返回是404 not found。 即使帶著這些配置的跨域信息也不能被前端所處理。

所以在 每個請求的開始,增加一個判斷,將這個方法綁定到BeginRequest事件上。

然后跨域請求的第一次Option請求返回都是200,并且?guī)е鴦倓偧t框中的信息。

到此這篇關于.Net站點設置多個路由對應同一個Action的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論