2016-11-16 83 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