Hi,
I get following Error:
Server error in Application. Unkown request format for an URL which ends unexpected with '/GetAllCategories'
Status Code: 500
Status Text: Internal Server Error
(translated from German: "German: Serverfehler in der Anwendung" Unbekanntes Anforderungsformat für einen URL, der unerwartet mit '/GetAllCategories' endet.)

[InvalidOperationException: Unbekanntes Anforderungsformat für einen URL, der unerwartet mit '/GetAllCategories' endet.]
   System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response) +405961
   System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath) +212
   System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) +193
   System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +93
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
My goal was to reach the issue of the example https://examples1.ext.net/#/GridPane.../ServiceUsing/ for loading the date via web services into a grid. The error appears already by executing the server ( ASP.NET Development Server in Visual Studio 2008 SP1).

How can this problem be solved? Please see the relevant code:

The code files are in the same directory.

default.aspx
(Line 40 has the entry for the web service)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="NorthwindTreePanelAndGridPanel._Default" %>

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <ext:ResourceManager runat="server">
    </ext:ResourceManager>
    <ext:Store ID="CategoryStore" runat="server">
        <Reader>
            <ext:JsonReader IDProperty="CategoryID">
                <Fields>
                    <ext:RecordField Name="CategoryID" />
                    <ext:RecordField Name="CategoryName" />
                    <ext:RecordField Name="Description" />
                </Fields>
            </ext:JsonReader>
        </Reader>
    </ext:Store>
    <ext:Store ID="ProductStore" runat="server">
        <Reader>
            <ext:JsonReader IDProperty="ProductID">
                <Fields>
                    <ext:RecordField Name="ProductID" />
                    <ext:RecordField Name="ProductName" />
                    <ext:RecordField Name="QuantityPerUnit" />
                    <ext:RecordField Name="UnitPrice" />
                    <ext:RecordField Name="UnitsInStock" />
                </Fields>
            </ext:JsonReader>
        </Reader>
    </ext:Store>
    
    <ext:Store runat="server" ID="Store1">
        <Proxy>
            <ext:HttpProxy Method="GET" Url="~/CategoriesService.asmx/GetAllCategories"  />
        </Proxy>
        <UpdateProxy>
            <ext:HttpWriteProxy Method="POST" HandleSaveResponseAsXml="true" Url="~/CategoriesService.asmx/SaveCategories" />
        </UpdateProxy>
        <Reader>
            <ext:XmlReader Record="CategoryName" IDPath="CategoryID">
                <Fields>
                    <ext:RecordField Name="CategoryID" />
                    <ext:RecordField Name="CategoryName" />
                    <ext:RecordField Name="Description" />
                </Fields>
            </ext:XmlReader>
        </Reader>
        <SortInfo Field="CategoryName" Direction="ASC" />
        <Listeners>
            <LoadException Handler="var e = e || {message: response.responseText}; alert('Load failed: ' + e.message);" />
            <SaveException Handler="alert('save failed');" />
            <CommitDone Handler="alert('commit success');" />
            <CommitFailed Handler="alert('Commit failed\nReason: '+msg)" />
        </Listeners>
    </ext:Store> 
    <ext:Viewport ID="MainViewPort" runat="server" Layout="BorderLayout">
        <Items>
            <ext:Panel ID="HeaderPanel" runat="server" Frame="true" Region="North">
                <Content>
                    <h1>
                        TreePanel and GridPanel Example</h1>
                </Content>
            </ext:Panel>
            <ext:TreePanel ID="NavigationTreePanel" runat="server" Split="true" Region="West"
                AutoScroll="true" Width="300" Height="500">
                <TopBar>
                    <ext:Toolbar ID="Toolbar1" runat="server">
                        <Items>
                            <ext:Button ID="Button1" runat="server" Icon="Folder" ToolTip="Alles aufklappen">
                                <Listeners>
                                    <Click Handler="#{NavigationTreePanel}.expandAll();" />
                                </Listeners>
                            </ext:Button>
                            <ext:Button ID="Button2" runat="server" Icon="FolderHome" ToolTip="Alles einklappen">
                                <Listeners>
                                    <Click Handler="#{NavigationTreePanel}.collapseAll();" />
                                </Listeners>
                            </ext:Button>
                        </Items>
                    </ext:Toolbar>
                </TopBar>
                <Root>
                    <ext:AsyncTreeNode NodeID="root_0" Text="Products" Qtip="Products" />
                </Root>
                <DirectEvents>
                    <Click OnEvent="NavigationTreePanel_OnClick">
                        <ExtraParams>
                            <ext:Parameter Name="NavigationTreePanelNodeId" Value="node.id" Mode="Raw" />
                            <ext:Parameter Name="NavigationTreePanelNodeText" Value="node.text" Mode="Raw" />
                            <ext:Parameter Name="NavigationTreePanelNodeParentText" Value="(node.parentNode != null) ? node.parentNode.text : null"
                                Mode="Raw" />
                            <ext:Parameter Name="NavigationTreePanelNodeGrandParentText" Value="(node.parentNode != null) ? ((node.parentNode.parentNode != null) ? node.parentNode.parentNode.text : null) : null"
                                Mode="Raw" />
                        </ExtraParams>
                    </Click>
                </DirectEvents>
                <Listeners>
                    <Click Handler="#{NavigationStatusBar}.setStatus({text: 'Node Selected: <b>' + node.text + '<br />', clear: true});" />
                    <ExpandNode Handler="#{NavigationStatusBar}.setStatus({text: 'Node Expanded: <b>' + node.text + '<br />', clear: true});"
                        Delay="30" />
                    <CollapseNode Handler="#{NavigationStatusBar}.setStatus({text: 'Node Collapsed: <b>' + node.text + '<br />', clear: true});" />
                </Listeners>
                <Loader>
                    <ext:TreeLoader DataUrl="~/NavigationTreeLoader.ashx" />
                </Loader>
                <SelectionModel>
                    <ext:DefaultSelectionModel ID="NavigationSelectionModel" runat="server" />
                </SelectionModel>
                <BottomBar>
                    <ext:StatusBar ID="NavigationStatusBar" runat="server" AutoClear="1500" />
                </BottomBar>
            </ext:TreePanel>
            <ext:Panel ID="MainDataPanelPlace" runat="server" Frame="true" Region="Center" Layout="BorderLayout">
                <Items>
                    <ext:Panel ID="DetailPanelPlace" runat="server" Frame="true" Region="North" Title="No Detail" Height="120">
                    </ext:Panel>
                    <ext:Panel ID="ChildrenPanelPlace" runat="server" Frame="true" Region="Center" Title="Children">
                    </ext:Panel>
                </Items>
            </ext:Panel>
        </Items>
    </ext:Viewport>
    <ext:GridPanel ID="DetailGridPanel" runat="server" Frame="false" StoreID="CategoryStore"
        Hidden="true" AutoHeight="true" AutoScroll="true">
    </ext:GridPanel>
    <ext:GridPanel ID="ChildrenGridPanel" runat="server" Frame="false" StoreID="CategoryStore"
        Hidden="true" AutoHeight="true" AutoScroll="true">
    </ext:GridPanel>
    </form>
</body>
</html>
CategoriesService.asmx:
<%@ WebService Language="C#" CodeBehind="CategoriesService.asmx.cs" Class="Ext.Net.Examples.CategoriesService" %>
CategoriesService.asmx.cs:
using System;
using System.Collections.Generic;
using System.Data.Linq;
using System.Web.Services;

using Ext.Net.Examples.Northwind;
using XResponse = Ext.Net.Response;

namespace Ext.Net.Examples
{
    /// <summary>
    /// Summary description for CategoriesService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class CategoriesService : System.Web.Services.WebService
    {
        [WebMethod]
        public List<SerializableEntity<Category>> GetAllCategories ( )
        {
            NorthwindDataContext db = new NorthwindDataContext();

            return db.Categories.ToList<Category, SerializableEntity<Category>>();
        }

        [WebMethod]
        public XResponse SaveCategories ( string data )
        {
            Response sr = new Response(true);

            try
            {
                NorthwindDataContext db = new NorthwindDataContext();
                StoreDataHandler dataHandler = new StoreDataHandler(data);
                ChangeRecords<Category> dataList = dataHandler.ObjectData<Category>();

                foreach (Category category in dataList.Deleted)
                {
                    db.Categories.Attach(category);
                    db.Categories.DeleteOnSubmit ( category );
                }

                foreach (Category category in dataList.Updated)
                {
                    db.Categories.Attach ( category );
                    db.Refresh(RefreshMode.KeepCurrentValues, category);
                }

                foreach (Category category in dataList.Created)
                {
                    //category.TemporaryID = category.CategoryID;
                    db.Categories.InsertOnSubmit ( category );
                }

                db.SubmitChanges();
            }
            catch (Exception e)
            {
                sr.Success = false;
                sr.Message = e.Message;
            }

            return sr;
        }
    }
}