zoukankan      html  css  js  c++  java
  • 关于IIS部署动态页面的配置问题

      通常我们在项目开发结束后向服务器部署站点后,站点的动态页面未能按照预期进行访问,这很有可能是IIS没有注册动态页面相应的“可执行文件”导致。这里所说的动态页面例如:访问MVC视图、WebAPIaspxashx等,也就是页面会对应有dll文件的情况。 

    动态页面访问失败的几种场景

    ashx(一般处理程序):

     

    WebAPI:

    问题排查

    如果说在我们部署动态页面后无法访问,我们可以试着排查IIS

    具体步骤如下:

    1.打开IIS管理器选中对应的站点,在窗体主界面找到“处理程序映射”并双击打开。

    2.在展开的列表中查找是否有包含我们要访问的文件类型。列表参考如图:

    如果列表没有包含我们要访问的文件类型,我们需要为IIS注册安装一些东西。

    解决办法(根据操作系统二选一):

    1.win10之前的操作系统可在VS安装目录,例如:(VS2013Common7ToolsShortcuts

    )里打开VS2013 开发人员命令提示”,然后在命令行中输入:aspnet_regiis -i

    2.win10系统不支持使用命令行,需要打开控制面板——>程序和功能——>启动和关闭windows功能,打开窗口后点击 Internet Information services节点勾选“应用程序开发功能”下的所有子节点,然后点击确定进行安装。配置选项如图:

     

    问题分析

      有了解决方案后我们可以思考下问题引发的原因。

      当请求发到服务器,IIS会先做一个处理:根据请求的文件类型进行判断,如果发现浏览器请求的是动态文件,IIS会将请求的动态页面通过一个“可执行文件”解析后转交给.Net Framework来执行,当.NetFramework执行完后在把执行的结果由IIS在返回给浏览器。因为IIS自身是无法处理动态文件的,动态文件中都是程序语言写的代码IIS自身不具备解析能力。

      上述的解决办法就是去通过注册安装从而使IIS服务器拥有这些“可执行文件”,然后根据不同的动态页面类型自动配置处理“可执行文件”映射关系。我们可以在IIS管理器的“处理程序映射”界面查看列表中的一项,其中动态页面类型都对应了一个“可执行文件”。如图:

     

      出现问题的情况:可能因为IIS安装配置选项问题,或者先安装.NetFramework后安装IIS等情况,都会导致IIS没有注册这些“可执行文件”,从而导致无法解析相应的动态页面。所以我们在服务器安装IIS时要考虑并注意这个细节。

      IIS处理动态页面的简易交互图:

     

    感想:不要为了解决问题而忽略引发问题的原因,只有当我们深刻分析问题才能触类旁通,达到知行合一。

  • 相关阅读:
    sql
    Java 反射
    Java 泛型
    Java 数组小记
    Java 实现二叉树
    Maven的环境配置
    用于解决easui 保存时候,前台传参是空字符串不null
    SpringMVC
    SpringMVC
    解决MySql varchar类型的数字排序
  • 原文地址:https://www.cnblogs.com/green-jcx/p/13297605.html
Copyright © 2011-2022 走看看