1

サイトコアでASP.NetWebAPI(http://asp.net/Webapi)を使用したいと思います。APIを参照しようとすると、404が表示され続けますが、

  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

web.configで。必要なアセンブリを参照しました。しかし、それはうまくいきません。私はWebアプリケーションプロジェクトを使用しています。私はWebアプリケーションプロジェクトでいくつかのサンプルを作成しましたが、それらは正常に機能します。しかし、sitecoreと統合することは私に苦労を与えます。

任意の入力をお願いします..?

ありがとう

4

2 に答える 2

4

これは、Sitecoreが賢明であり、コンテンツツリーでURLを見つけようとするリクエストを中断している可能性があります。

呼び出すURL(またはそれらへのパスの一部)がわかっている場合は、構成のIgnoreUrlPrefixes設定にそれらを追加できます。

ここに素敵な小さな投稿を参照してください:

http://sitecoreblog.alexshyba.com/2011/05/teach-sitecore-to-ignore-directory.html

于 2012-08-20T10:57:25.790 に答える
3

webapiルートを作成している場合は、RequestPipelineでステップを実行することもできます。これにより、現在のURLに一致するルートが見つかった場合にパイプラインが中止されます。

public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
    {
        RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(args.Context));

        if (routeData != null)
        {
            HttpContext.Current.RemapHandler(routeData.RouteHandler.GetHttpHandler(HttpContext.Current.Request.RequestContext));
            args.AbortPipeline();
        }
    }

これにより、データベースとサイトを解決した直後に設定できるため、Sitecore.Contextを使用してデータベースアクセスなどを処理できます。

于 2012-08-20T15:00:59.677 に答える