我已经尝试部署 Web API 一段时间了,但一直没有成功。无论我如何在配置中进行调整(根据 Google 搜索的建议),我仍然会遇到同样令人沮丧的错误:
System.Web.HttpException
at System.Web.StaticFileHandler.ProcessRequest (System.Web.HttpContext context) [0x00000] in <filename unknown>:0
at System.Web.DefaultHttpHandler.BeginProcessRequest (System.Web.HttpContext context, System.AsyncCallback callback, System.Object state) [0x00000] in <filename unknown>:0
at System.Web.HttpApplication+<Pipeline>c__Iterator1.MoveNext () [0x00000] in <filename unknown>:0
at System.Web.HttpApplication.Tick () [0x00000] in <filename unknown>:0
这在我的浏览器中显示为错误 404。
描述:HTTP 404。您正在寻找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。
细节:请求的 URL:/MyAPI/Home/Index
我应该补充一点,使用 XSP4 通过 MonoDevelop 进行调试时它运行良好,这就是为什么我相信这是一个配置问题而不是代码问题。
我的 nginx 配置:
server {
listen 80;
root /var/www/MyAPI/;
server_name MyAPI;
location / {
fastcgi_pass 127.0.0.1:9000;
include /etc/nginx/fastcgi_params;
}
}
我尝试过使用 webapp 文件并将其全部输入到命令行中。
<apps>
<web-application>
<name>MyAPI</name>
<vhost>*</vhost>
<vport>80</vport>
<vpath>/</vpath>
<path>/var/www/MyAPI/</path>
</web-application>
</apps>
然后在命令行中我尝试过:
fastcgi-mono-server4 /applications=/MyAPI:/var/www/MyAPI/ socket=tcp:127.0.0.1:9000
和
fastcgi-mono-server4 --appconfigdir=/etc/webapps socket=tcp:127.0.0.1:9000
我在这里遗漏了什么?有人能解决这个问题吗?
答案1
事实证明,该问题是由于在发布 Web API 时使用了预编译选项而导致的。当我尝试在不使用预编译的情况下发布应用程序时,一切都运行顺利。