Using MapPath with WCF Service, Setting aspNetCompatibilityEnabled to true
Monday 18 August 2008 @ 10:05 am
I’m just starting out using WCF in an application for the first time.  I’m using Visual Studio 2008 sp1 and created an asp.net web site from the standard create project wizard.  I then created a simple AJAX–enabled WCF Service as follows: image I then added some code to the service that looks like the following (using MapPath):
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class TrackData
{
    // Add [WebGet] attribute to use HTTP GET
    [OperationContract]
    public List<TrackDataList> RetrieveTrackDataByLap(int excerciseId, int lapNumberToShow)
    {
        var listTrackData = new List<TrackDataList>();
 
 
        string fileName = HttpContext.Current.Server.MapPath("~/App_Data/sample.tcl");
        Activity activity = GarminUtils.ConvertTCS(fileName);
I call it with JavaScript as follows:
/// <reference path="MapLive.aspx" />
/// <reference path="../VEJS/VeJavaScriptIntellisenseHelper.js" />
 
function pageLoad() {
    TrackData.RetrieveTrackDataByLap(0, 0, OnRetrieveTrackDataByLapComplete);
}
 
function OnRetrieveTrackDataByLapComplete(TrackDataList) {
 
    alert('OnRetrieveTrackDataByLapComplete called');
}
  And, I’m surprised to find that I get a JavaScript error saying MapPath is undefined.  So, after a little digging I discover that I need to set aspNetCompatibilityEnabled to true in my web.config as follows:   xx By default, it is set to false.  Hope this Helps!
- Posted in C#, JavaScript, WCF  




Leave a Reply