如何在IIS中托管webAPI / HTML?

时间:2016-11-16 08:55:57

标签: asp.net iis asp.net-web-api cross-domain web-deployment

我在VS2015中创建了一个项目,我的架构是这样的,使用ASP.NET空网站我添加了几个html,jquery,highcharts等(没有使用任何aspx页面)和使用webApi nuget包的相同解决方案我添加控制器和添加类库(业务层,数据层)到同一个project.so从html页面使用AGAX我调用webapi(exsits在同一个解决方案)和控制器方法将联系数据层来获取数据,我会得到json和我将绑定到HTML,我使用基于令牌的身份验证,一切正常。

现在问题是如何在IIS中提供此解决方案,最初我做了什么,首先我发布了我的解决方案API部分并托管在IIS(8081端口)并能够调用webapi。 然后我将我的HTML(UI)部分添加到IIS(8080端口)并且能够浏览页面,但是在调用WEB API时会导致HTML CROSS问题,因为WEB API处于不同的域中,因此WEBAPI中的更改很少我是能够解决HTML CROSS问题但仍然存在更多挑战,

对于这个有什么最好的解决方案,我是一名中级开发人员,直到现在我还没有做任何适当的部署。我们可以用一个多米安装一切吗? 解决方案参考:http://www.codeproject.com/Articles/815916/Create-an-ASP-NET-Web-Forms-Application-using-Boot enter image description here

2 个答案:

答案 0 :(得分:0)

将以下内容添加到api项目的webconfig中

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

这将允许您的api与所有域进行通信。

对于在单个域中执行所有操作,我希望您将所有html文件放入razor.Then从那里您可以通过简单的ajax调用来控制html。所以它看起来像一个整洁的SPA。

答案 1 :(得分:0)

避免CORS问题的最佳方法是首先发布您的WEB API,并在IIS中添加该应用程序的新应用程序添加您的HTML网站,因为两者都在IIS中的同一端口,我们可以避免使用CORS。