0

mvc 3 アプリで /api URL へのリクエストを処理するように nancy をセットアップしようとしています。

ApiModule に 2 つのナンシー ルートを設定しました

Get["/"] = _ => "こんにちは"; // 期待どおり "Hello" を返します

Get["/ニュースレター/サインアップ"] = _ => "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>
4

3 に答える 3

2

これはすべて Wiki でカバーする必要があります。

https://github.com/NancyFx/Nancy/wiki/Hosting-nancy-with-asp.net

于 2012-02-06T07:56:01.590 に答える
1

MVC 4.0 Web サイトを作成したときに、同じ問題が発生しました。

この問題は、既定の MVC テンプレートがファイルにルートを設定すること"api/{controller}/{id}"です。WebAPIConfig.cs

このルートを削除/変更する必要があります。そうしないと、へのすべてのリクエストが盗まれます/api/xxxx

このファイルを次のように変更します。

public static void Register(HttpConfiguration config)
{

}

これで問題が解決するはずです。

于 2013-01-29T13:33:38.587 に答える