如何将asp.net web api应用程序添加到IIS(正确的方法)

时间:2017-05-23 01:33:33

标签: asp.net iis asp.net-web-api

我有一个asp.et web api应用程序,到目前为止我已部署到IIS默认网站。我现在看到这是不好的做法,就像把它放在C:\inetpub\wwwroot下一样。

所以,我想100%了解如何在IIS中手动设置它,并在网站,应用程序,绑定和应用程序池之间建立适当的关系。除了网站和应用程序之外,其中大部分都是有意义的。

我已经找到了很多教程,但我简直不敢相信有多少教程没有用(有些人甚至建议将端口80改为http,换一些东西!)。因此,暂时将SSL排除在等式之外,我按照以下方式进行了教程(不起作用)。

  1. 我把应用程序放在wwwroot以外的地方,所以我把它放在C:\inetpub\myapp

  2. 该教程现在说要创建网站并将其指向此处。所以我在IIS管理器中这样做 enter image description here

  3. 根据教程,我现在可以在浏览器中访问site.com。这不起作用,它超时。事实证明我需要将其添加到 hosts 文件中,即添加条目

    127.0.0.1 site1.com

  4. 现在当我浏览到site.com时,我看到了默认的IIS页面(不是我的应用程序的default.html)

    1. 所以,我把它添加为一个应用程序......
    2. enter image description here

      1. 我现在浏览http://site1.com/myapp。我得到了

        Server Error in '/myapp' Application.
        
        Configuration Error
        
        Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 
        
        Parser Error Message: The configSource file 'config\throttlePolicy.config' is also used in a parent, this is not allowed. 
        
        Source Error: 
        
        
        Line 57:   </system.serviceModel>
        Line 58:  
        Line 59:   <throttlePolicy configSource="config\throttlePolicy.config" />
        Line 60:   <appSettings configSource="config\appSettings.config" />   
        Line 61:   <connectionStrings configSource="config\connectionStrings.config" />    
        
        Source File: C:\inetpub\myapp\web.config    Line: 59 
        
      2. 最后,我将app文件夹嵌套在站点文件夹中,即C:\inetpub\myapp\myapp

      3. enter image description here

        现在最后,如果我浏览http://site1.com/myapp/我可以看到我的应用程序!

        问题

        我是否以正确的方式做到了这一点?

        似乎没有提到你需要将应用程序嵌套在站点文件夹中?

        提前致谢!

1 个答案:

答案 0 :(得分:2)

您犯的主要错误是您需要在现有的默认网站下创建虚拟文件夹或应用程序,而不是创建一个全新的网站。您应该右键单击“默认网站”并在其下创建内容而不是右键单击Web服务器根目录

让我在遇到他们时解决问题。下面的所有内容都是一个简化的解释,还有更多内容,但希望有所帮助。

  
    

我现在看到这是不好的做法

  

关于网站的不良做法通常是围绕安全性进行的。即不要留下明显可猜测的默认值,以便于攻击

  
    

有些人甚至建议将端口80(对​​于http)更改为其他内容

  

这是可猜测默认值的示例。 80是默认的Web端口。如果将其更改为其他内容,则意味着端口80上的DOS攻击将失败,因为没有Web服务器正在侦听它。

  
    

我把应用程序放在除了wwwroot

之外的其他地方   

好主意。

通常在构建应用程序时,您将所有应用程序代码放在不同的驱动器上(即D),以便C纯粹是操作系统,理论上如果遇到问题,您可以重新安装或完全移动D驱动器。

  
    

创建一个网站并将其指向此处

  

这里很多混淆是术语 - 你实际上并不想在根目录中右键单击/创建网站。这创建了一个全新的“主机”级网站。您想右键单击“默认网站”并创建以下内容之一:

  • 如果你只有静态内容(html页面,图片,javascript),那么创建虚拟目录(没有应用程序池)

  • 如果您实际上有服务器端处理(即ASP应用程序),则添加应用程序(具有应用程序池)

以下是构成网站的一些内容(参考IIS)

  1. 运行IIS的服务器
  2. 服务器依次包含一个或多个“网站”,表示“根”响应某个主机名和端口。默认情况下,您具有在IIS中看到的默认网站。在这个阶段,你可能不应该在这个级别创建新的“网站”。
  3. “默认网站”又包含一个或多个虚拟文件夹或应用程序。这些是“默认网站”下的文件夹。这是您实际需要发布网站文件的地方
  4. 你需要专注于3级,但看起来你在2级做事

    这就是为什么你只获得一个IIS默认页面 - 你创建了一个全新的根网站,而不是一个真正的'应用程序'

    如果您在Web服务器上运行了几个不同的Web应用程序,那么它们通常位于各自的“Web应用程序”文件夹中,而不是为每个应用程序创建一个根网站。

      
        

    我现在应该可以在浏览器中访问site.com了。这不起作用

      
    互联网上不存在

    site1.com(这是您的浏览器所在的位置)。在您对hosts文件进行更改之前,它也不存在于“LAN”中。这是一个网络/ DNS的事情,我不会介绍。

      
        

    因此,我将其添加为应用程序。

      

    是。您需要直接跳到此步骤,但在默认网站

    下创建它
      
        

    我现在浏览http://site1.com/myapp。我明白了......

      

    您获得的配置错误与创建错误级别的内容有关。删除IIS中的所有内容(默认网站除外),然后重新开始!

      
        

    似乎没有提到你需要将应用程序嵌套在站点文件夹中?

      

    我理解你的沮丧。在任何地方都没有真正解释过。 (我只是用谷歌搜索不同级别的解释,但找不到任何东西)。

    当您开始使用IIS中的网络应用时,通常应该有一个“默认网站”,其下有多个“应用”和“虚拟文件夹”。