Asp.net 在mvc 3应用程序中使用nancy处理子文件夹请求时出现问题

Asp.net 在mvc 3应用程序中使用nancy处理子文件夹请求时出现问题,asp.net,nancy,Asp.net,Nancy,我正在尝试设置nancy来处理对我的mvc 3应用程序中的/api url的请求 我在我的API模块中设置了2条nancy路线 获取[“/”]=“你好”;//按预期返回“Hello” 获取[“/newsletter/signup”]=“DDD”//返回一个asp.net 404。没有预料到 /时事通讯/注册/测试返回nancy 404 我已多次检查配置并重新启动应用程序,但无法使其正常工作 编辑:这里是涉及的代码和配置 public class ApiModule : NancyModule {

我正在尝试设置nancy来处理对我的mvc 3应用程序中的/api url的请求

我在我的API模块中设置了2条nancy路线

获取[“/”]=“你好”;//按预期返回“Hello”

获取[“/newsletter/signup”]=“DDD”//返回一个asp.net 404。没有预料到

/时事通讯/注册/测试返回nancy 404

我已多次检查配置并重新启动应用程序,但无法使其正常工作

编辑:这里是涉及的代码和配置

public class ApiModule : NancyModule
{
    private readonly INewsletterSubscriberRepository _newsletterSubscriberRepository;

    public ApiModule(INewsletterSubscriberRepository newsletterSubscriberRepository) : base("/api")
    {
        _newsletterSubscriberRepository = newsletterSubscriberRepository;


        Get["/newsletter/signup"] = _ => "ddddd";

        Get["/"] = _ => "Hello";
    }
}
base.web.config

    <httpHandlers>
      <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="api/*" />
      <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
    </httpHandlers>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules>
    <handlers>
      <add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="api/*" />
      <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
    </handlers>
  </system.webServer>

我创建了一个api文件夹并将这个web.config放在那里

    <configuration>
  <system.web>
    <httpHandlers>
      <clear/>
      <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/>
    </httpHandlers>
  </system.web>
</configuration>

这些都应该在Wiki中介绍:


这些都应该在Wiki中介绍:


我在创建MVC 4.0网站时遇到了同样的问题:

这个问题是默认的MVC模板在
WebAPIConfig.cs
文件中设置到
“api/{controller}/{id}”
的路由

您需要删除/更改此路由,否则它将窃取所有前往
/api/xxxx

更改此文件,使其如下所示:

public static void Register(HttpConfiguration config)
{

}

这应该可以解决您的问题。

我在创建MVC 4.0网站时也遇到了同样的问题:

这个问题是默认的MVC模板在
WebAPIConfig.cs
文件中设置到
“api/{controller}/{id}”
的路由

您需要删除/更改此路由,否则它将窃取所有前往
/api/xxxx

更改此文件,使其如下所示:

public static void Register(HttpConfiguration config)
{

}
这应该可以解决您的问题。

它抛出404(NotFound),因为您没有可以接受“/newsletter/signup/test”的路由

要更正此问题,请使用

Get["/newsletter/signup"]
换成

Get["/newsletter/signup/{param}"]
此路由有一个捕获段{param},它捕获传递到请求URL的给定段中的任何内容,然后将其传递到路由的操作中。有关在Nancy中定义路由的详细信息,请参阅此部分。

它抛出404(未找到),因为您没有可以接受“/新闻稿/注册/测试”的路由

要更正此问题,请使用

Get["/newsletter/signup"]
换成

Get["/newsletter/signup/{param}"]

此路由有一个捕获段{param},它捕获传递到请求URL的给定段中的任何内容,然后将其传递到路由的操作中。有关在Nancy中定义路由的详细信息,请参阅此部分。

我已经完成了“将Nancy添加到现有站点”部分中的每个步骤。它适用于“/”路径,但不适用于“/newsletter/signup”path@TT你能将你的web.config设置和模块类添加到问题中吗?那么,如果你得到的是Nancy 404,那么你引用路径的方式显然有问题。我已经完成了“将Nancy添加到现有站点”部分的每一步。它适用于“/”路径,但不适用于“/newsletter/signup”path@TT你能把你的web.config设置和模块类添加到问题中吗?那么,如果你得到的是Nancy 404,那么你引用路径的方式显然有问题。