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