Sep 05, 2011, 2:59 PM
Load GridPanel via WebService fails with Server Error 500
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.)
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)
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;
}
}
}