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

.Net站點(diǎn)設(shè)置多個(gè)路由對(duì)應(yīng)同一個(gè)Action

 更新時(shí)間:2022年07月22日 09:14:55   作者:奮斗的大橙子  
這篇文章介紹了.Net站點(diǎn)設(shè)置多個(gè)路由對(duì)應(yīng)同一個(gè)Action的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

需求:有些瀏覽器會(huì)屏蔽帶有Ad字樣的路徑,此時(shí)需要?jiǎng)?chuàng)建多個(gè)路由指向同一個(gè)Action。

例如:

原來(lái):http://lalalalalala.org:1506/api/advert/common 現(xiàn)在需要增加另一個(gè)請(qǐng)求路徑 http://lalalalalala.org:1506/api/guanggao/common

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

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

2. 在DotNet Freamwork項(xiàng)目下:

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

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

在swagger中查看的效果如下:

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

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

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

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

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

如果把特性路由放在默認(rèn)路由的下面,編譯不會(huì)出錯(cuò),但是在運(yùn)行時(shí)候就會(huì)出現(xiàn)找不到Action 的問(wèn)題,如下圖:

{

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

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

}

3.開(kāi)始修改controller

通過(guò) ~/api/xxx/yyy 可以重寫(xiě)路由前綴

補(bǔ)充:Webapi2 里面跨域問(wèn)題

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

1.升級(jí)或者安裝nuget

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

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

啟動(dòng)程序此時(shí)還是會(huì)出現(xiàn)一個(gè)問(wèn)題:

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

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

所以在 每個(gè)請(qǐng)求的開(kāi)始,增加一個(gè)判斷,將這個(gè)方法綁定到BeginRequest事件上。

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

到此這篇關(guān)于.Net站點(diǎn)設(shè)置多個(gè)路由對(duì)應(yīng)同一個(gè)Action的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論