簡體   English   中英

在aspnet core 2中的aspnet mvc和webapi之間發現並共享控制器

[英]Discovering and sharing controllers between aspnet mvc and webapi in aspnet core 2

我們有一個Spa客戶端,它在aspnet核心Web應用程序(aspnet核心spa模板)中運行。 Api項目是業務邏輯和數據訪問所駐留的地方,可以由其他客戶端(例如本機,其他Spas等)調用。Web應用程序受Cookie中間人保護,外部提供商可以登錄,而Web api受不記名令牌保護。

在此處輸入圖片說明

我們已經注意到,如果我們在Web應用程序中向Api項目添加引用,則Api項目中定義的Controllers在Web應用程序中可用。 因此,只需添加引用,我們就可以從Web應用程序中的Spa對/ api / data進行本地ajax調用。 我們在這里沒有做任何額外的事情,沒有自定義控制器解析器,程序集加載等…

這就是aspnet core mvc中現在的工作方式嗎? 我們是否正確假設Web應用程序將僅發現控制器,但在配置主機時忽略Api項目中的所有program.cs / startup.cs?

不。這不是它的工作方式。 首先,在這一點上,“ MVC”和“ Web Api”之間的區分比任何東西都更加古怪。 在Core中,它們是相同的。 如果您的項目僅是一個API,則可以在標准MVC服務中保留一些內容,但仍使用“ MVC”。 結果,調用“ API”或“ MVC”項目並沒有任何意義。 您可以根據需要混合和匹配任何程度。

如果您有兩個單獨的項目,則應遵循該步驟並將所有內容分開。 一個不應依賴另一個。 您可以始終從MVC項目中“調用”您的API,就像使用任何其他HTTP托管服務一樣。 但是,您將無法利用UrlHelper之類的東西為MVC項目中的API操作生成URL。 您只需要“知道”這些即可。

如果您希望兩個項目緊密集成,那么它們就不應該是兩個項目。 只需一個網站項目,然后將所有API和MVC內容移入其中。 然后,您將真正共享所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM