.Net站點設(shè)置多個路由對應(yīng)同一個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特性標(biāo)簽,便能得到下面四個路徑,然后他們指向的都是Get方法. 可以在swagger中查看:

2. 在DotNet Freamwork項目下:
某個系統(tǒng)是webapi 1,不具有特性路由功能,所以不能像.net core 一樣通過加標(biāo)簽的方式進(jìn)行重命名。
方法一:可以參考下面的解決方式,我在注冊路由的地方,將需要進(jìn)行增加路由的方法,都增加了一個配置。

在swagger中查看的效果如下:

方法二:升級成webapi2,然后使用特性路由方式。
1.升級【webapi 1】到【W(wǎng)ebApi 2】,如下升級到最新

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

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

* 這里注意下,特性路由要在普通路由規(guī)則上面。
如果把特性路由放在默認(rèn)路由的下面,編譯不會出錯,但是在運行時候就會出現(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進(jìn)行了設(shè)置,所以這里啟用一下就可以了。

啟動程序此時還是會出現(xiàn)一個問題:
當(dāng)前端使用Ajax進(jìn)行跨域請求的時候,會先試探性的發(fā)一個Option請求,然后得到對應(yīng)的跨域信息,如上面紅框中的配置。 當(dāng)發(fā)現(xiàn)允許請求的時候,此時就進(jìn)行下一步真實的請求。
問題在于這個Option請求返回Code要是200,前端才認(rèn)為是正常的。但是直接升級webapi之后,Option請求返回是404 not found。 即使帶著這些配置的跨域信息也不能被前端所處理。
所以在 每個請求的開始,增加一個判斷,將這個方法綁定到BeginRequest事件上。

然后跨域請求的第一次Option請求返回都是200,并且?guī)е鴦倓偧t框中的信息。
到此這篇關(guān)于.Net站點設(shè)置多個路由對應(yīng)同一個Action的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Asp.net 文件上傳類(取得文件后綴名,保存文件,加入文字水印)
Asp.net 取得文件后綴名,保存文件,加入文字水印的代碼類2008-11-11
Ext.net中的MessageBox的簡單應(yīng)用實現(xiàn)代碼
今天在項目中要用到簡單的MessageBox的使用。在Ext.net中沒有Winform那么簡單,直接寫MessageBox.show()的方法。于是就去examples.ext.net的例子網(wǎng)站找,想找到個實際能用的2012-03-03
.NET微服務(wù)架構(gòu)CI/CD鏡像自動分發(fā)
這篇文章介紹了.NET微服務(wù)架構(gòu)CI/CD實現(xiàn)鏡像自動分發(fā)的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
利用noesis.Javascript開源組件.Net中執(zhí)行javascript腳本
利用Noesis.Javascript開源組件可以做到在.net中執(zhí)行js腳本,同時js腳本也能調(diào)用C#函數(shù)。這個組件的獲得方式:在NuGet中輸入搜索"Noesis"就能找到,我們來做個搜索功能:用戶能夠在textbox中輸入js腳本來篩選list記錄2013-12-12
.Net Core和jexus配置HTTPS服務(wù)方法
下面小編就為大家分享一篇.Net Core和jexus配置HTTPS服務(wù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
ASP.NET2.0緩存(Cache)技術(shù)深入理解
緩存技術(shù)是ASP.NET2.0非常重要的一個特性,它提供了一種非常好的本地數(shù)據(jù)緩存機制,從而有效的提高數(shù)據(jù)訪問的性能2012-11-11
基于.net core微服務(wù)的另一種實現(xiàn)方法
這篇文章主要給大家介紹了基于.net core微服務(wù)的另一種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07

