sbmandav
sbmandav

Reputation: 1221

asp.net web api in sitecore

I would like to use ASP.Net Web API (http://asp.net/Webapi) in sitecore. I keep getting 404 when i try to browse the API's though i added the

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

in web.config. Referred the necessary assemblies. But, stil cant get through.. I am using web application project. I did few samples in web application project, they work fine. but, integrating with sitecore giving me hard time.

any inputs please..?

thanks

Upvotes: 1

Views: 2603

Answers (2)

dunston
dunston

Reputation: 2670

If you are creating webapi routes, you could also make a step in the RequestPipeline, that aborts the pipeline if it finds a route that matches the current 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();
        }
    }

With that you could set it right after it resolves the database and the site, so you can use Sitecore.Context to handle database access and etc.

Upvotes: 3

Steven Newstead
Steven Newstead

Reputation: 1243

This could be Sitecore being a wise guy and interrupting your requests to try and find the URL in the content tree.

If you know the URLs you are going to be calling (or part of the paths to them) you can add them to the IgnoreUrlPrefixes setting in the config.

See nice little post here:

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

Upvotes: 4

Related Questions