1

我想在 sitecore 中使用 ASP.Net Web API (http://asp.net/Webapi)。当我尝试浏览 API 时,虽然我添加了

  <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 回答