首页 文章

Nginx FastCGI Mono WebAPI 2抛出ArgumentNullException:值不能为null . 参数名称:路径

提问于
浏览
0

我的设置: Client (http:8080) Nginx (FastCGI:9000) fastcgi-mono-server

我想在Ubuntu上使用Mono 4和 fastcgi-mono-server4 来托管完全使用WebAPI 2控制器,配置等构建的ASP.NET MVC 4应用程序,但是对于WebAPI路由,它返回 400

System.ArgumentNullException
Value cannot be null.
Parameter name: path

Description: HTTP 400.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): mscorlib.
Exception stack trace:
  at System.IO.DirectoryInfo.CheckPath (System.String path) [0x00006] in <dca3b561b8ad4f9fb10141d81b39ff45>:0 
  at System.IO.DirectoryInfo..ctor (System.String path, System.Boolean simpleOriginalPath) [0x00006] in <dca3b561b8ad4f9fb10141d81b39ff45>:0 
  at System.IO.DirectoryInfo..ctor (System.String path) [0x00000] in <dca3b561b8ad4f9fb10141d81b39ff45>:0 
  at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:.ctor (string)
  at Mono.WebServer.FastCgi.WorkerRequest.GetFilePath () [0x00035] in <a872d12009ac4a668f0d504d764f1c44>:0 
  at Mono.WebServer.MonoWorkerRequest.GetFilePathTranslated () [0x00001] in <5b4128956e344d60b82a5fd7012fd8a1>:0 
  at Mono.WebServer.MonoWorkerRequest.AssertFileAccessible () [0x00010] in <5b4128956e344d60b82a5fd7012fd8a1>:0 
  at Mono.WebServer.MonoWorkerRequest.ProcessRequest () [0x0000b] in <5b4128956e344d60b82a5fd7012fd8a1>:0

在我的开发机器上运行良好,通过 xsp4 和通过MonoDevelop "run"按钮 . 没试过 fastcgi-mono-server4 ,但是如果你认为它是相关的我会的 .

正如我上面所说,只有匹配WebAPI路由的网址会出现这种情况 - 例如 /api/products ,这意味着配置工作,我想它与环境有关 .

我已经开始 fastcgi-mono-server 如下: MONO_OPTIONS=--trace=E:System.Exception fastcgi-mono-server4 /appconfigdir=/etc/mono/fastcgi /socket=tcp:127.0.0.1:9000 并且当点击WebAPI网址时它会输出:

[0x7f8276459700:] EXCEPTION handling: System.ArgumentNullException: Value cannot be null.
Parameter name: path

我的代码不做任何IO,只做数据库(但我们还没有完成) . 正如我上面所说,只有匹配WebAPI路由的网址会出现这种情况 - 例如 /api/products ,这意味着配置工作,我想它与环境有关 .

1 回答

  • 2

    发生这种情况是因为缺少必需的参数 .

    我今天遇到了这个 . 我发现在/ etc / nginx / fastcgi_params中,我需要添加以下行:

    fastcgi_param  PATH_INFO          "";
    

    在服务器配置中,我需要导入此文件:

    server {
        listen 80;
        ...
        location / {
            ...
            fastcgi_pass 127.0.0.1:9000;
            include /etc/nginx/fastcgi_params;
        }
    }
    

    当然,您可能会错过其他参数 .

相关问题