NancyFX:带有查询字符串参数的路由总是返回 404 NotFound

Posted

技术标签:

【中文标题】NancyFX:带有查询字符串参数的路由总是返回 404 NotFound【英文标题】:NancyFX: Routes with query string parameters always returns a 404 NotFound 【发布时间】:2012-05-29 22:21:39 【问题描述】:

我有一个简单的 Nancy 模块。我想将查询字符串(q-s)参数传递给处理程序。如果我没有任何 q-s 参数,一切都很好。一旦我添加了一个参数,我就会返回一个 404 状态码。

南希模块

public class SimpleModule : NancyModule

    public SimpleModule()
    
        Get["/"] = parameters => HttpStatusCode.OK;
    

单元测试 - 通过

[Fact]
public void SimpleModule__Should_return_statusOK_when_passing_query_params()

    const string uri = "/";
    var response = Fake.Browser().Get(uri, with => with.HttpRequest());
    response.StatusCode.ShouldBe(HttpStatusCode.OK);

单元测试 - 失败

[Fact]
public void SimpleModule__Should_return_statusOK_when_passing_query_params()

    const string uri = "/?id=1";
    var response = Fake.Browser().Get(uri, with => with.HttpRequest());
    response.StatusCode.ShouldBe(HttpStatusCode.OK);

谢谢

【问题讨论】:

【参考方案1】:

您没有在 url 上传入查询,而是在浏览器上下文中使用 .Query 方法

var result = browser.Get("/", with => 
    with.Query("key", "value");
);

【讨论】:

我不能说这是非常 SDHP。 上周我遇到同样的事情时,情况似乎并非如此。 @tom.dietrich 您尝试以下哪种情况? gist.github.com/thecodejunkie/204297b492e1ab5b3e2f 所有这些测试都通过了。如果您有任何问题,请在我们的 GitHub 存储库中提出,并附上重现步骤,我们会看看 Should_return_querystring_parameter_when_passed_in_with_path 失败。它仅在我传入完整的 URL(例如 localhost/foo?bar=123)时才有效,但不适用于 /foo?bar=123 我可以确认错误仍然存​​在,使用 Nancy.Testing 1.4.1.0

以上是关于NancyFX:带有查询字符串参数的路由总是返回 404 NotFound的主要内容,如果未能解决你的问题,请参考以下文章

查询返回带有错误参数的 sql 字符串

DB2 - 使用带有字符串数组参数的 Dapper 选择查询将不会返回正确的结果

具有固定 URI 的 ASP.NET 路由不映射查询字符串参数

如何使用 React 路由器设置带有可选查询参数的路由?

带有查询参数的 MVC 属性路由不起作用

使用路由与查询字符串参数是否有误? [关闭]