So Tired !_! 逆水行舟, 不进则退!

14Mar/11

配置 IIS 7 显示详细错误信息

Posted by Nick Xu

如果你在 IIS 7 中只看到诸如 HTTP Error 500 - Internal Server Error (500 - 内部服务器错误) 的简单错误信息,那么可以通过如下步骤配置 IIS7 以输出详细错误信息。

通过 IIS 配置

  1. 按住 WIN + R 打开命令行输入 inetmgr 打开 IIS 管理
  2. 左边目录选择目标站点,在右边 IIS 块中双击 Error Pages
  3. 在 Error Pages 中右边的 Actions,选择 Edit Feature Settings
  4. 在 Error Responses 中,选择 Detailed errors,单机 OK 完成配置。

iis7-detailed-errors

通过命令行

启用详细错误:

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/yourapp" /section:httpErrors /errorMode:Detailed

禁用详细错误:

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/yourapp" /section:httpErrors /errorMode:Custom

通过 web.config 配置

其实,上面在两种配置,最终都会反应到对应的 web.config 中。因此,我们可以直接编辑 web.config。特别是对于买的虚拟主机(Shared Web Hosting),没有权限更改IIS。打开网站目录,找到 web.config 文件(如果没有,就建立一个 txt 文件存为 web.config),找到 system.webServer 配置节,添加配置 <httpErrors errorMode="DetailedLocalOnly" />

[code:xml]

<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" />
</system.webServer>
</configuration>

[/code]

注意

  • 此参数选项可以应用到网站或子目录或虚拟目录。
  • 此参数选项对所有 IIS 应用程序有效,包括 ASP, APS.NET, PHP 等。

如果是 ASP.NET 程序,可能还需要配置  <customErrors mode=”Off” />
[code:xml]

<system.web>
<customErrors mode=”Off” />
</system.web>

[/code]

此外,如果是 ASP 程序,还可以配置 sendErrorsToBrowser 选项:

通过 IIS 配置

  1. 按住 WIN + R 打开命令行输入 inetmgr 打开 IIS 管理
  2. 左边目录选择目标站点,在右边 IIS 块中双击 ASP
  3. 在 ASP 页中展开 Debugging Properties 节点
  4. 找到 Send Errors To Browser ,选择 true
  5. 右边 Actions 中,单击 Apply

iis7-detailed-errors-asp

通过命令行

启用:

%windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true

禁用:

%windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:false

注意上面参数中 config 后面不能指定站点目录

11Nov/10

直接把ASP.NET文件后缀改为php或者htm在IIS7上运行

Posted by Nick Xu

今天用了第三方开源的一个服务程序,返回页面写死了是PHP后缀的,因为不想修改别人的程序,只有我这边把ASP.NET的程序以PHP后缀来执行了.

问了谷哥好多次,都没有找到我想要的结果.后来想了一下,如果真正安装PHP的时候是怎样的呢?

然后我就查了一下PHP在IIS7下的安装过程(不是安装官方MSI包的那种方式哦),然后照版煮碗,结果,肯定是成功的啦,不然就不会写到这了,呵呵

我观察了一下设置完成后的WEB.CONFIG文件,其实在三个地方添加一点代码即可完成ASP.NET以PHP后缀运行,我直接把代码贴出来了.

<compilation debug="true">
<buildProviders>
<add extension=".php" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
<httpHandlers>
<add path="*.php" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/>
</httpHandlers>

<system.webServer>
<handlers>
<add name="php" path="*.php" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
</handlers>
</system.webServer>

   
site
site