【问题标题】:Self-hosted Nancy instance returning 404 errors自托管 Nancy 实例返回 404 错误
【发布时间】:2015-10-01 13:26:27
【问题描述】:

我正在尝试运行一个自托管的 Nancy 应用程序,但我无法让它返回有效响应。我是南希的新人;我希望我的问题相当简单。

这里有一些代码:

class Program
{
    static void Main(string[] args)
    {
        const String PORT_SETTING = "webServicePortNumber";
        const String URI = "http://localhost:{0}/download/";

        var portNum = ConfigurationManager.AppSettings[PORT_SETTING];
        var uri = new Uri(String.Format(URI, portNum));

        var config = new HostConfiguration { 
            UrlReservations = new UrlReservations { CreateAutomatically = true }
        };

        using (var nancyHost = new NancyHost(new Bootstrapper(), config, uri)) {
            nancyHost.Start();

            Console.WriteLine(String.Format("Listening on {0}. Press any key to stop.", uri.AbsoluteUri));
            Console.ReadKey();
        }

        Console.WriteLine("Stopped. Press any key to exit.");
        Console.ReadKey();
    }
}

internal class Bootstrapper : DefaultNancyBootstrapper
{
    protected override Nancy.Diagnostics.DiagnosticsConfiguration DiagnosticsConfiguration
    {
        get {
            return new DiagnosticsConfiguration { 
                Password = @"[password]" 
            };
        }
    }
}

我的 NancyModule 如下所示:

public class DownloadsModule : NancyModule
{

    public DownloadsModule() : base("/download")
    {
        RegisterRoutes();
    }

    private void RegisterRoutes()
    {
        Put["/"] = parms => InitiateDownload(parms);
        Get["/"] = parms => Summary(parms);
        Get["/{id}"] = parms => GetStatus(parms.requestId);
    }

    private Response GetStatus(Guid requestId)
    {
        return Response.AsText("TEST: GetStatus requestId " + requestId);
    }

    private Response Summary(dynamic parms)
    {
        return Response.AsText("Summary: You loved me before, do you love me now?");
    }

    private Response InitiateDownload(dynamic parms)
    {
        return Response.AsText("InitiateDownload.");
    }
}

南希正在跑步;我可以通过http://127.0.0.1:8880/download/_Nancy/ 访问诊断。看着他们,路线似乎准备好了。交互式诊断/GetAllRoutes 显示:

P U T
    name: [nothing]    path: /download
G E T
    name: [nothing]    path: /download
    name: [nothing]    path: /download/{id}

然而,当我尝试http://localhost:8880/download/ 时,我得到了 404。

诊断页面上的请求跟踪显示:

Method: GET
Request Url:
Scheme: http
Host Name: localhost
Port: 8880
Base Path: /download
Path: /
Query:
Site Base: http://localhost:8880
Is Secure: false
Request Content Type:
Response Content Type: text/html
Request Headers:
    <snip>
    Accept: text/html;q=1
            application/xhtml+xml;q=1
            image/webp;q=1
            application/xml;q=0.9
            */*;q=0.8
    <snip>
Response Headers:
Status Code: 404
Log:    New Request Started
        [DefaultResponseNegotiator] Processing as real response

那么,为什么 Nancy 不将此请求路由到正确的路由?

【问题讨论】:

    标签: nancy


    【解决方案1】:

    jchannon 在 Nancy JabbR 房间向我指出的问题:

    URI指定http://localhost:{0}/download/,而模块也指定/download的基本路径,所以目前它正在寻找http://localhost:{0}/download/download/的URL

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      相关资源
      最近更新 更多