Follow me on Twitter at
FYI, I'm blogging most of my stuff over at More Wally now.
You might want to add my rss feed to your reader at:
May 2008 - Posts - Wallace B. McClure

Wallace B. McClure

All About Wally McClure - The musings of Wallym on Web, HTML5, Mobile, Xamarin.iOS, Xamarin.Android, and Windows Azure.


Visual Studio Magazine Column Personal Blog


Book Authors




Georgia Tech Bloggers



May 2008 - Posts

ADO.NET Data Services in.NET 3.5 SP1 Beta1

I started working on an example using the ADO.NET Data Services (formerly Astoria) in .NET 3.5 SP!.  ADO.NET Data Services uses the Entity Framework to expose data to clients in a restful manner.  Its ideally suited to data access over ajax clients.  For some reason, my sample wouldn't completely run.  I could query and delete, but no inserty or updatey action would work.  The error messages I got were crap merely saying that the operation failed.  What good are those messages?  I posted some messages and I decided to contact Pablo Castro about the issue.  Pablo was his usual helpful self.  He gave me a bunch of suggestions.  I went through them and it looked like I needed to have the VJ# redistributable installed.  I then mucked up my VPC session.  I went back and started from the beginning with a fresh VPC.  I installed VJ# redistributable, .NET 3.5 SP1 beta1, Sql Express Management Studio, and voila, I got meaningful error messages finally.  With the meaningful error messages, it was cake to fix the updatey problem.  The inserty problem magically resolved itself.  All was right with the world.  Expect a video podcast on this topic shortly along with source code examples and things that tripped me up in the process..

.NET 3.5 SP1 tag started

I've started a new tag on my blog about .NET 3.5 SP1 features as I write some examples up on them.

This tag will have all of my posts about new features in .NET 3.5 SP1 along with video podcasts and source code. 

Pictures from Recent Events (Western Michigan Day of .NET & User Group talk in California, MD)

I wanted to post some of the pictures that I took at the events that I have been to in the past week.  They are:

Western Michigan Day of .NET:

California, MD User Group Talk:

Follow me on Twitter

As if we don't have enough things that waste our time, follow my comments about life and things upto 140 characters on twitter.  My twitter url is and enjoy.

PS.  If you follow me, I'll follow you, assuming you aren't a twitter spammer.

Posted: May 16 2008, 10:50 AM by Wallym | with no comments
Filed under:
LinkedIn Profile

I just made my LinkedIn profile public.  Check it out at  Please check it out and tell the world about us.

Posted: May 15 2008, 05:06 PM by Wallym | with no comments
Filed under:
CodeStock in Knoxville, TN on August 9

It looks like CodeStock is going to happen on August 9.  More info to follow soon.  Michael Neel is doing a lot of work on it.


Posted: May 10 2008, 11:00 AM by Wallym | with 1 comment(s)
Filed under:
ASP.NET Podcast Show #113 - Deep Dive into the ASP.NET AJAX UpdatePanel

Original Url:

Subscribe to everything <---- This is what the cool kids are doing.

Subscribe to WMV.

Subscribe to MP4/M4V.

Subscribe to MP3

Download WMV.

Download M4V.

Download MP3.

Show Notes:


ASP.NET Podcast Show #112 - Intro to ASP.NET AJAX

Original Url:

Subscribe to everything <---- This is what the cool kids are doing.

Subscribe to WMV.

Subscribe to MP4/M4V.

Subscribe to MP3

Download WMV.

Download M4V.

Download MP3.

Show Notes:

New feeds for the ASP.NET Podcast

I've created some new feeds for the ASP.NET Podcast  There is still the same general feed.  It will have all shows and all of the variations of the shows in it.  These include WMV, MP4/M4V, MP3, and whatever else one can throw in it. The rest of the feeds are:

If you have any problems, let me know ASAP! 


ASP.NET Podcast Show #111 - ASP.NET AJAX with Virtual Earth

Original url:

Subscribe.ASP.NET AJAX with Virtual Earth <-- Everybody needs some, how about you!

Download WMV - Video for PC.

Download M4V - Video for iPod.

Download MP3 - Audio only.

Show Notes:

  • Upcoming events.
  • URLs of importance, so important that your life depends on them.
  • Mapping with Virtual Earth.
  • Web Services.
  • Client Script.

Source Code:

Master Page:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""> <html xmlns=""><head runat="server">    <title>ASP.NET Podcast Mapping Page</title>    <asp:ContentPlaceHolder id="head" runat="server">    </asp:ContentPlaceHolder>    <script src=";v=2.x&amp;key=ABQIAAAA_mrKwezGRvHyiI2zD3-QjxQyvuBphQwgXhP_kHK6Ww2QlMKTbxQ3mY6sQnMU6V5PMK8wQzOfhkt_Vw" language="javascript" type="text/javascript"></script>    <script type="text/javascript" src=""></script> </head><body onunload="GUnload()">    <form id="form1" runat="server">    <asp:ScriptManager ID="sm" runat="server">        <Services>            <asp:ServiceReference Path="~/GetMapData.asmx" />        </Services>    </asp:ScriptManager>    <div>        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">                </asp:ContentPlaceHolder>    </div>    </form></body>




 <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Live_Default" Title="Virtual Earth Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"><div id="MapDiv" style="position:relative; width:450px; height: 350px;" ></div><br /><div id="MapInfo"></div> <script language="javascript" type="text/javascript">var Map;function pageLoad(){    GetMapData.MapData(SetupMap);}   function SetupMap(result){    var Lat = result.Center.Lat;    var Lon = result.Center.Lon;    var ZoomLevel = result.ZoomLevel;    var MapView, TopLeft, BottomRight;    Map = new VEMap('MapDiv');    Map.LoadMap(new VELatLong(Lat, Lon), ZoomLevel ,'h' ,false);    MapView = Map.GetMapView();    TopLeft = MapView.TopLeftLatLong;    BottomRight = MapView.BottomRightLatLong;    //TopleftLatLong and BottomRightLatLong return a VELatLong object.    Map.AttachEvent("onchangeview", MapChangedView);    GetMapData.GetPointData(10, TopLeft.Latitude, TopLeft.Longitude,        BottomRight.Latitude, BottomRight.Longitude, GetDataSuccess);}function GetDataSuccess(result){    var i = 0;    var Lat, Lon;    $get("MapInfo").innerHTML = "";    for(i=0;i<result.length;i++)    {        Lat = result[i].Location.Lat;        Lon = result[i].Location.Lon;        var shape = new VEShape(VEShapeType.Pushpin, new VELatLong(Lat, Lon));        shape.SetTitle("Title: " + i);        shape.SetDescription(result[i].Description);        Map.AddShape(shape);        $get("MapInfo").innerHTML += "Point Location - Lat: " +             result[i].Location.Lat + " Lon: " + result[i].Location.Lon + "<br />";    }}


function MapChangedView(e){    Map.DeleteAllShapes();    MapView = Map.GetMapView();    TopLeft = MapView.TopLeftLatLong;    BottomRight = MapView.BottomRightLatLong;    GetMapData.GetPointData(10, TopLeft.Latitude, TopLeft.Longitude,        BottomRight.Latitude, BottomRight.Longitude, GetDataSuccess);}</script></asp:Content>


Web Service: 

using System;using System.Collections;using System.Collections.Generic;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Web.Script.Services; /// <summary>/// Summary description for GetMapData/// </summary>[WebService(Namespace = "")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][ScriptService]public class GetMapData : System.Web.Services.WebService {     public GetMapData () {         //Uncomment the following line if using designed components         //InitializeComponent();     }     [WebMethod]    [GenerateScriptType(typeof(MapData))]    public MapData MapData()    {        MapData md = new MapData();        LatLon ll = new LatLon();        ll.Lat = 36;        ll.Lon = -84;        md.Center = ll;        md.ZoomLevel = 8;        return (md);    }     [WebMethod]    [GenerateScriptType(typeof(PointData))]    public PointData[] GetPointData(int PointCount,         double ULLat, double ULLon,         double LRLat, double LRLon)    {        int i = 0;        double PTLat, PTLon;        double LatDelta, LonDelta;        Random rd = new Random();        PointData pd;        LatLon ll;        List<PointData> pdl = new List<PointData>();         LatDelta = ULLat - LRLat;        LonDelta = ULLon - LRLon;         for (i = 0; i < PointCount; i++)        {            pd = new PointData();            ll = new LatLon();            ll.Lat = LRLat + LatDelta * rd.NextDouble();            ll.Lon = LRLon + LonDelta * rd.NextDouble();            pd.Location = ll;            pd.Description = "Point number: " + i.ToString();            pdl.Add(pd);        }        return (pdl.ToArray());    }} public class MapData{    public LatLon Center;    public int ZoomLevel;} public class LatLon{    public double Lat;    public double Lon;} public class PointData{    public LatLon Location;    public string Description;}
More Posts Next page »