O problema foi causado pelo uso da opção Pré-compilação ao publicar a API da Web. Quando tentei publicar o aplicativo sem usar o Precompile, tudo correu bem.
Estou tentando implantar minha API da Web há algum tempo sem sucesso. Não importa como eu jogue as coisas em minhas configurações (por recomendações das minhas pesquisas no Google), eu ainda me deparo com o mesmo erro frustrante:
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
Isso é exibido como um erro 404 no meu navegador.
Descrição: HTTP 404. O recurso que você está procurando (ou uma de suas dependências) pode ter sido removido, teve seu nome alterado ou está temporariamente indisponível. Por favor, revise o seguinte URL e verifique se ele está escrito corretamente.
Detalhes: URL solicitado: / MyAPI / Home / Index
Devo acrescentar que ele funciona bem ao depurar com o MonoDevelop usando o XSP4, e é por isso que acredito que isso seja um problema de configuração, em vez de um problema de código.
Minha configuração nginx:
server {
listen 80;
root /var/www/MyAPI/;
server_name MyAPI;
location / {
fastcgi_pass 127.0.0.1:9000;
include /etc/nginx/fastcgi_params;
}
}
Eu tentei ambos usando um arquivo webapp e apenas digitando tudo na linha de comando.
<apps>
<web-application>
<name>MyAPI</name>
<vhost>*</vhost>
<vport>80</vport>
<vpath>/</vpath>
<path>/var/www/MyAPI/</path>
</web-application>
</apps>
Então, na linha de comando, tentei:
fastcgi-mono-server4 /applications=/MyAPI:/var/www/MyAPI/ socket=tcp:127.0.0.1:9000
e
fastcgi-mono-server4 --appconfigdir=/etc/webapps socket=tcp:127.0.0.1:9000
O que estou perdendo aqui? Alguém tem uma solução para isso?