我已将 Web 服务部署到运行 lighttpd 和 fastcgi-mono-server2 的 ubuntu 服务器。.asmx 页面加载正确,但是当我测试该方法时,我得到 404。
我的网络服务称为 Import.asmx,我的方法称为下载,404 回来说 import.asmx/download 不存在
使用 xsp2 相同的服务可以完美运行
我认为这与 /download 如何由 lighttpd/fastcgi 提供服务有关,但无法解决如何修复它。
我有同样的问题。原来是在找不到资产时服务 404 的默认指令。删除了以下行:
try_files $uri $uri/ =404;
PATH_INFO
并在 /etc/nginx/fastcgi_params 中添加为 fastcgi 参数:
fastcgi_param PATH_INFO $fastcgi_path_info;
那为我修好了。希望能帮助到你。
解决了 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;
}
我离它不远。只需在您拥有的当前位置规则之前添加此位置规则即可。