2

我有一个用经典 asp 编写的项目,特定表单的提交由 Perl 脚本处理。

我将为这个项目做一个增强。我为 Windows 32 位安装了最新版本的 ActivePerl。

我查看了生产环境,发现在 IIS 7.5 中,“Handler Mappings”上有一个条目*.plC:\Perl\bin\PerlEx30.dll. 所以我在开发环境上做了同样的事情。(请注意,Prod. 环境中没有“*.cgi”的映射)

现在,当我尝试提交其操作为的表单时,MyScript.pl出现以下错误:

HTTP Error 405.0 - Method Not Allowed
The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.

也许值得一说,我在 64 位环境中,我也尝试了 Windows 64 位的 ActivePerl(我映射*.plperl514.dll),但仍然得到同样的错误!

4

3 回答 3

5

您的解决方法是使用 32 位版本的 perl。如果您想使用 64 位版本,这在 IIS 8.5 Windows 2012 R2 上对我有用:

  1. 将模块映射添加到您的站点:
  2. 请求路径:*.pl
  3. 模块:CgiModule
  4. 可执行文件:C:\Perl64\bin\perl.exe "%s" %s
  5. 名称:Perl CGI

您可以通过创建以下“hello world”页面来测试它:

use strict;
use CGI;

my $page = new CGI;
my $msg = "Hello from ActivePerl CGI!";

print $page->header( "text/html" ),$page->start_html( $msg );
print $page->h2($msg);
print $page->end_html;

将其命名为 test.pl,将其放入您的 webroot 目录并浏览到它进行测试。

于 2014-04-10T21:44:09.027 回答
3

应用程序池设置为“ Enable 32-Bit Applications = false”,我将其更改为 true,它解决了问题。

于 2012-01-23T22:14:21.213 回答
2

你还没有说你是否已经让任何Perl 工作了(甚至是“hello world”),或者问题是否出在这个特定的脚本上(也许只是在这个特定的服务器上)。

反正 -

  1. 我怀疑你的 Perl 安装是问题所在。

  2. 你肯定需要做更多的故障排除。

  3. 我会先验证一个简单的单行“hello world”是否可行。

  4. 接下来,我将“分而治之”以确定问题出在哪里。我猜它很可能在“MyScript.pl”中的某个地方。我也猜测它应该很容易追踪。

  5. 这些链接可能有助于为您提供更多线索,了解您在“分而治之”时可能会寻找的确切内容(在您验证 Perl 本身可以从您的 IIS 调用之后):

PS:我猜这个问题可能很简单,就像“MyScript.pl”中的 URL 丢失或不合适一样!

PPS:冒着重复自己的风险 - 请先验证“helo_world.pl”。如果它不起作用,请发布完整的“hello_world”脚本和完整的错误消息。

于 2012-01-23T03:32:40.220 回答