I finally got a moment to look into this further.
I have resolved it now. What I found was this:
I went back to view source on the browser for the page failing to load the Ext JS and Ext.NET all debug scripts. In the view source I clicked on the link to the actual script include, as the browser shows the source of the link you clicked. As before, I saw the custom 404 page I had set up. What I didn't notice last time (as it was off the screen) was at the bottom was this commented out bit:
<!--
[HttpException]: A public action method 'extnet-all-debug-js' was not found on controller 'Ext.Net3.Tests.Controllers.ExtNetController'.
at System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
-->
This made me realise that it must be something to do with the routing setup/global.asax/registering routes etc.
I compared to the NuGet version which uses WebActivatorEx. I don't have that in my test project. And without adding it, it was still not working.
I double checked global.asax (as I was just registering the route manually without the use of WebActivatorEx).
ExtNetConfig looks the same other than lack of the Start method that WebActivatorEx used.
So it was global.asax:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
ExtNetConfig.RegisterRoutes(RouteTable.Routes);
}
The above wasn't working. And then I realized. The ExtNetConfig registration has to come before the general route config registration.
Simply swapping those lines around to the following worked:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
ExtNetConfig.RegisterRoutes(RouteTable.Routes);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
So I think the summary is that in a manually created project that referenced Ext.NET DLLs manually (i.e. not via NuGet) I didn't have WebActivatorFx. Registering the route using the ExtNetConfig was added manually after the default route registration (which is not right). While this took a while to spot (though slap on the head moment!) it helped lead to a leaner web.config :)
Hope that helps others!