Perl Mojolious IIS路由到POST方法

Perl Mojolious IIS路由到POST方法,perl,iis,routes,mojolicious,mojolicious-lite,Perl,Iis,Routes,Mojolicious,Mojolicious Lite,现在,我有了一个在morbo服务器上运行的令人着迷的应用程序。当我在IIS中运行它时,它似乎可以工作,但当您提交任何表单时,就好像IIS不确定GET或POST方法是哪个路由 所以现在我的路线看起来像 my $authorized = $r->under('/conditions_form')->to('Account#is_logged_in'); $authorized->get('/')->name('beach_conditions_form')->to(

现在,我有了一个在morbo服务器上运行的令人着迷的应用程序。当我在IIS中运行它时,它似乎可以工作,但当您提交任何表单时,就好像IIS不确定GET或POST方法是哪个路由

所以现在我的路线看起来像

my $authorized = $r->under('/conditions_form')->to('Account#is_logged_in');
  $authorized->get('/')->name('beach_conditions_form')->to('form#show_beach_conditions_form');
  $authorized->post('/')->name('submit_conditions')->to('form#submit_beach_conditions');
当我的表单完成并提交后,它应该像这样重定向回表单

$self->redirect_to('beach_conditions_form');
这是当我得到我的错误! 这一错误与

The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are "[Wed Jun 28 15:26:22 2017] [debug] Reading configuration file "D:\inetpub\wwwroot\beach_conditions\beach_conditions.conf" [Wed Jun 28 15:26:22 2017] [debug] POST "/conditions_form" [Wed Jun 28 15:26:22 2017] [debug] Routing to controller "BeachConditions::Controller::Account" and action "is_logged_in" [Wed Jun 28 15:26:22 2017] [debug] Routing to controller "BeachConditions::Controller::Form" and action "submit_beach_conditions" [Wed Jun 28 15:26:22 2017] [error] DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception: DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot insert the value NULL into column 'OBS_DT', table 'BeachSafety.dbo.BEACH_CONDITIONS'; column does not allow nulls. INSERT fails. (SQL-23000) [state was 23000 now 01000] [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated. (SQL-01000) [for Statement "INSERT INTO BEACH_CONDITIONS ( beach_current, flag_color, note, obs_dt, obs_loc, rip_current_risk, water_temp, wave_height, wave_type, weather, wind_direction, wind_speed) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) SELECT SCOPE_IDENTITY()" with ParamValues: 1=undef, 2=undef, 3=undef, 4=undef, 5=undef, 6=undef, 7=undef, 8=undef, 9=undef, 10=undef, 11=undef, 12=undef] 
对我来说,这意味着它跳过了GET方法,直接转到了POST

如果我对路径进行硬编码,那么一切都是好的(但是一切都不是好的,因为它是硬编码的……)

这很有效

$self->redirect_to('http://server/beach_conditions/beach_conditions.pl/conditions_form');
我找到了这个,但帮不了什么忙


谢谢你提供的任何信息

好的,@simbabque是对的,你可以完全独立于IIS主持

我刚把我的启动脚本做成了这样

Mojolicious::Commands->start_app('BeachConditions', 'daemon', '-l', 'http://*:8080');
现在它是可访问的,您所要做的就是运行启动脚本

这给我带来了一个新的问题,我将发布。
那么,如何运行多个应用程序呢?

好的,@simbabque是对的,您可以完全独立于IIS托管

我刚把我的启动脚本做成了这样

Mojolicious::Commands->start_app('BeachConditions', 'daemon', '-l', 'http://*:8080');
现在它是可访问的,您所要做的就是运行启动脚本

这给我带来了一个新的问题,我将发布。
那么如何运行多个应用程序呢?

IIS看到的不是标题。它正在读取日志输出,该输出应该转到STDERR,并认为这就是响应。你是如何将Mojo应用程序连接到IIS的?它是通过FCGI在hypnotoad上运行的吗?它在这条信息中谈到了CGI。如果这是真正的CGI,它将是非常低效的,因为它需要为每个请求编译整个应用程序。我想你不想那样。啊,好吧,我少了一块。我只是在运行启动脚本,就像你在morbo中一样。我打开了FastCGI,但它会导致错误,从我读到的内容来看,这对我来说很奇怪。所以目前我只是在运行CGI。我得调查一下这个“催眠症”。非常感谢。好吧,我有点困惑。Hypnotoad是不是像morbo一样在服务器上?那么您在服务器上运行服务器了吗?对我来说似乎很奇怪,但我会尝试一下,看看会发生什么。是的,是生产服务器。我想你可以用FCGI在iis后面运行它。但也可能完全没有iis。你特别需要吗?提供文件或其他服务?好吧,经过一些研究,代理服务器似乎就是我想要的。配置IIS以查看Mojolicious的守护进程服务器。我相当肯定这就是解决办法。一旦我尝试,就会返回结果。IIS看到的不是标题。它正在读取日志输出,该输出应该转到STDERR,并认为这就是响应。你是如何将Mojo应用程序连接到IIS的?它是通过FCGI在hypnotoad上运行的吗?它在这条信息中谈到了CGI。如果这是真正的CGI,它将是非常低效的,因为它需要为每个请求编译整个应用程序。我想你不想那样。啊,好吧,我少了一块。我只是在运行启动脚本,就像你在morbo中一样。我打开了FastCGI,但它会导致错误,从我读到的内容来看,这对我来说很奇怪。所以目前我只是在运行CGI。我得调查一下这个“催眠症”。非常感谢。好吧,我有点困惑。Hypnotoad是不是像morbo一样在服务器上?那么您在服务器上运行服务器了吗?对我来说似乎很奇怪,但我会尝试一下,看看会发生什么。是的,是生产服务器。我想你可以用FCGI在iis后面运行它。但也可能完全没有iis。你特别需要吗?提供文件或其他服务?好吧,经过一些研究,代理服务器似乎就是我想要的。配置IIS以查看Mojolicious的守护进程服务器。我相当肯定这就是解决办法。一旦我尝试了,我会带着结果回来。我想刚才没有必要删除另一个问题。事实上,编辑后的标题是一个非常好的替代品。我建议您取消删除它,以便其他面临与Mojo相关的相同问题的人可以找到它和重复目标。:)我认为刚才没有必要删除另一个问题。事实上,编辑后的标题是一个非常好的替代品。我建议您取消删除它,以便其他面临与Mojo相关的相同问题的人可以找到它和重复目标。:)