我正在尝试设置 nancy 来处理我的 mvc 3 应用程序中对 /api url 的请求。
我在我的 ApiModule 中设置了 2 个 nancy 路由
获取["/"] = _ => "你好"; // 按预期返回“Hello”
获取["/newsletter/signup"] = _ => "ddddd"; // 返回一个 asp.net 404。不是预期的。
/newsletter/signup/test 返回一个 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>