.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的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
ASP.NET中的Inherits、CodeFile、CodeBehind的區(qū)別詳解
這篇文章主要介紹了ASP.NET中的Inherits、CodeFile、CodeBehind的區(qū)別詳解,需要的朋友可以參考下2014-07-07在.NET Core類庫中使用EF Core遷移數(shù)據(jù)庫到SQL Server的方法
下面小編就為大家分享一篇在.NET Core類庫中使用EF Core遷移數(shù)據(jù)庫到SQL Server的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12asp.net 使用Response.Filter 過濾非法詞匯
一般信息發(fā)布網(wǎng)站,論壇等均具有實現(xiàn)非法詞匯過濾功能,即當用戶錄入非法詞匯時,進行替換,使其無法顯示到頁面上,針對此種功能,通常采用的時,在讀取時,在讀到非法詞匯后,進行替換。2010-03-03ASP.NETCore6開啟文件服務允許通過url訪問附件的操作方法
最近在做一個工作臺的文件上傳下載功能,主要想實現(xiàn)上傳圖片之后,可以通過url直接訪問,由于url直接訪問文件不安全,所以需要手動開啟文件服務,這篇文章主要介紹了ASP.NETCore6開啟文件服務允許通過url訪問附件,需要的朋友可以參考下2023-11-11在Framework4.0中實現(xiàn)延遲加載的實現(xiàn)方法
延遲加載,亦稱延遲實例化,延遲初始化等,主要表達的思想是,把對象的創(chuàng)建將會延遲到使用時創(chuàng)建,而不是在對象實例化時創(chuàng)建對象,即用時才加載。2011-08-08asp.net mvc4 mysql制作簡單分頁組件(部分視圖)
這篇文章主要介紹了asp.net mvc4 mysql制作簡單分頁組件,附部分視圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10.Net Core+Angular Cli/Angular4開發(fā)環(huán)境搭建教程
這篇文章主要為大家詳細介紹了.Net Core+Angular Cli/Angular4開發(fā)環(huán)境搭建教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06.net通過Action進行Options參數(shù)的傳遞的方法
在.NET Core中,使用Action和Options參數(shù)方式配置服務并將配置信息對象注冊到IServiceCollection的好處在于,它提供了更高級別的可配置性和可擴展性,這篇文章主要介紹了.net通過Action進行Options參數(shù)的傳遞,你知道是怎么實現(xiàn)的嗎,需要的朋友可以參考下2023-12-12asp.net 讀取并修改config文件實現(xiàn)代碼
讀取并修改 config 文件的asp.net代碼,方便我們用asp.net修改配置文件。2009-11-11