0

我已将 Web 服务部署到运行 lighttpd 和 fastcgi-mono-server2 的 ubuntu 服务器。.asmx 页面加载正确,但是当我测试该方法时,我得到 404。

我的网络服务称为 Import.asmx,我的方法称为下载,404 回来说 import.asmx/download 不存在

使用 xsp2 相同的服务可以完美运行

我认为这与 /download 如何由 lighttpd/fastcgi 提供服务有关,但无法解决如何修复它。

4

2 回答 2

0

我有同样的问题。原来是在找不到资产时服务 404 的默认指令。删除了以下行:

try_files $uri $uri/ =404;

PATH_INFO并在 /etc/nginx/fastcgi_params 中添加为 fastcgi 参数:

fastcgi_param  PATH_INFO        $fastcgi_path_info;

那为我修好了。希望能帮助到你。

于 2015-03-09T22:55:17.833 回答
0

解决了 404 错误......但现在我有一个 500。

实际上,我在每次 MyService.asmx/SomeMethod 后调用时都会收到此错误。解决方案 [不是真的] 我已经想通了:

location ~ \.(aspx|asmx|ashx|asmx\/(.*)|asax|ascx|soap|rem|axd|cs|config|dll)$ {
        fastcgi_pass   127.0.0.1:9001;
        index index.html index.htm default.aspx Default.aspx;
        fastcgi_index Default.aspx;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }

我已将它从仅asmx更改为asmx/( )*。好的,没有 404,但现在是 500:System.Web.HttpException:访问文件“/Services/MyService.asmx/MyMethod”时不允许方法“POST”。

这一发现为我提供了一些线索,表明 nginx 无法正确处理此类请求。谷歌搜索近 2 小时后,我找到了解决方案

location ~ \.asmx(.*) {
             fastcgi_split_path_info ^(.+\.asmx)(.*)$;
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
             fastcgi_param PATH_INFO $fastcgi_path_info;
             fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
             include /etc/nginx/fastcgi_params;
             fastcgi_index Default.aspx;
             fastcgi_pass 127.0.0.1:9001;
     }

我离它不远。只需在您拥有的当前位置规则之前添加此位置规则即可。

于 2011-11-15T03:33:01.420 回答