2016-11-16 40 views
0

我已經創造了VS2015的一個項目,我的架構是這樣的,使用ASP.NET空網站,我已經添加一些HTML,jQuery的,highcharts等(不使用任何aspx頁面)和相同的解決方案,我增加控制器使用的WebAPI的NuGet包從HTML頁面使用AGAX添加類庫(業務層,數據層),以相同的project.so我打電話的WebAPI(在同一soloution exsits)和控制器方法將與數據層來獲取數據,我會得到JSON,我會綁定到HTML,我正在使用基於令牌的身份驗證,一切都運作完美。如何在IIS中託管webAPI/HTML?

現在的問題是如何託管該解決方案在IIS中,最初我做什麼,我先發布我的解決方案API的一部分,並在IIS(8081端口)主辦,並能夠調用的WebAPI。 然後我說我的HTML(UI)的一部分,以IIS(8080端口),並能瀏覽網頁,但在調用Web API它會導致HTML CROSS問題,因爲Web API是在不同的領域,所以隨着的WebAPI一些改變我能夠解決HTML CROSS問題,但仍然有幾個挑戰,但仍然有幾個挑戰,

所以有什麼最好的解決方案,我是一箇中級開發人員,直到現在我還沒有做過任何適當的部署。我們可以在一個domian舉辦一切? 解決方案參考:http://www.codeproject.com/Articles/815916/Create-an-ASP-NET-Web-Forms-Application-using-Boot enter image description here

回答

0

最好的辦法是先發布Web API,並在IIS中添加新的應用程序爲該應用程序添加HTML網站,因爲兩者都是在IIS相同的端口,可避免CORS。

0

以下添加到您的API項目

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<system.webServer> 
    <httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
    </httpProtocol> 
</system.webServer> 
</configuration> 

的webconfig這將使你的API的所有域進行通信。

爲了在單個域中做所有事情,我寧願把所有的html文件都放入razor中。然後從那裏通過簡單的ajax調用來控制html。所以它看起來就像一個整潔的SPA。避免CORS問題

+0

但在ajax調用中,我無法捕獲標題,例如xhr.getResponseHeader(「Token」),因此eveytime標記將爲空 – kiransr

+0

檢查您是否正確地從api項目返回標題。這可能有助於你http://stackoverflow.com/questions/6539342/how-to-add-headers-in-httpcontext-response-in-asp-net-mvc-3 – M14