網站首頁 編程語言 正文
需求:有些瀏覽器會屏蔽帶有Ad字樣的路徑,此時需要創建多個路由指向同一個Action。
例如:
原來:http://lalalalalala.org:1506/api/advert/common 現在需要增加另一個請求路徑 http://lalalalalala.org:1506/api/guanggao/common
1、.Net Core中追加這樣的路徑比較簡單,如下
只需要增加在Controller和Action增加Route特性標簽,便能得到下面四個路徑,然后他們指向的都是Get方法. 可以在swagger中查看:
2. 在DotNet Freamwork項目下:
某個系統是webapi 1,不具有特性路由功能,所以不能像.net core 一樣通過加標簽的方式進行重命名。
方法一:可以參考下面的解決方式,我在注冊路由的地方,將需要進行增加路由的方法,都增加了一個配置。
在swagger中查看的效果如下:
方法二:升級成webapi2,然后使用特性路由方式。
1.升級【webapi 1】到【WebApi 2】,如下升級到最新
其中不升級 WebHost 會出現下面的異常
2.手動添加特性路由的配置代碼,如下圖,添加如下代碼到默認的路由上面: config.MapHttpAttributeRoutes();
* 這里注意下,特性路由要在普通路由規則上面。
如果把特性路由放在默認路由的下面,編譯不會出錯,但是在運行時候就會出現找不到Action 的問題,如下圖:
{
"Message": "找不到與請求 URI“http://localhost:21094/api/Default2/Get?id=2”匹配的 HTTP 資源。",
"MessageDetail": "未找到與名為“Default2”的控制器匹配的類型。"
}
3.開始修改controller
通過 ~/api/xxx/yyy 可以重寫路由前綴
補充:Webapi2 里面跨域問題
在第二步升級了webapi之后,在前端請求的時候,會出現跨域問題。解決可以參考我下面的做法:
1.升級或者安裝nuget
然后在配置的地方添加如下代碼: config.EnableCors();
config.EnableCors() 里面可以指定 跨域的Domain、Header以及Methond ,但是廣告系統原來在web.config進行了設置,所以這里啟用一下就可以了。
啟動程序此時還是會出現一個問題:
當前端使用Ajax進行跨域請求的時候,會先試探性的發一個Option請求,然后得到對應的跨域信息,如上面紅框中的配置。 當發現允許請求的時候,此時就進行下一步真實的請求。
問題在于這個Option請求返回Code要是200,前端才認為是正常的。但是直接升級webapi之后,Option請求返回是404 not found。 即使帶著這些配置的跨域信息也不能被前端所處理。
所以在 每個請求的開始,增加一個判斷,將這個方法綁定到BeginRequest事件上。
然后跨域請求的第一次Option請求返回都是200,并且帶著剛剛紅框中的信息。
原文鏈接:https://www.cnblogs.com/dcz2015/p/11323876.html
相關推薦
- 2022-06-24 使用ASP.NET?Web?API構建Restful?API_實用技巧
- 2022-04-14 如何解決error: failed to push some refs to ‘xxx(遠程庫)‘
- 2022-12-26 Python標準庫os常用函數和屬性詳解_python
- 2022-04-15 python的迭代器,生成器和裝飾器你了解嗎_python
- 2022-05-26 Flutter實現滑動塊驗證碼功能_Android
- 2022-07-11 go語言實現二叉樹的序例化與反序列化_Golang
- 2022-09-13 C#使用Objects?Comparer進行對象比較_C#教程
- 2023-01-26 詳解Python手寫數字識別模型的構建與使用_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支