[mapserver-users] MapScript issue in multiple WCF apps (ASP.NET)

Brian Poteat Poteat.Brian at geoeye.com
Tue Mar 8 11:54:15 PST 2011


I have a very strange issue while using MapScript from within some web service projects. I have different projects/applications for different services - one for each of WCF, WMS, WFS, and WMTS - so we can configure them independently. MapScript requests work fine for all of them separately but if I access MapScript from one and then another, one of them will not work correctly anymore. The requests will return success (result == 0) and the format returned is correct but the data is either null or an incorrect image. It doesn't seem to be a threading issue since I can bombard any one of the services with asynchronous requests and they are handled fine and the problems don't necessarily come while using the different applications at the same time - just one then the other.

I am using a support project for making the MS requests that is referenced by each application (though I tried putting the code directly in each app with the same results). Below is a simplified version of the helper utility I am using. Is there anything that stands out as being an obvious issue? My endpoint applications simply get the query parameters from the url request and pass them as the requestParams argument with the appropriate map file.
namespace MapScript
{
         public class MapScriptResponse
         {
                 public string Format { get; set; }
                 public byte[] Data { get; set; }
                 public string ErrorString { get; set; }
                 public DateTime LastModified { get; set; }
         }
         public class MapScriptUtilities
         {
                 /// <summary>
                 /// Execute a service request to mapserver through mapscript
                 /// </summary>
                  /// <param name="mapFile">Physical path to the map file on which to make the request</param>
                 /// <param name="requestParams">List of request parameters</param>
                 /// <returns>The response from mapscript.</returns>
                  public static MapScriptResponse ServiceRequest(string mapFile, Dictionary<string, string> requestParams)
                 {
                          MapScriptResponse response = new MapScriptResponse();
                          mapObj map = new mapObj(mapFile);
                          OWSRequest owsRequest = new OWSRequest();
                          Dictionary<string, string>.Enumerator en = requestParams.GetEnumerator();
                          string paramName = "";
                          string paramValue = "";
                          while (en.MoveNext())
                          {
                                   paramName = en.Current.Key;
                                   paramValue = en.Current.Value;
                                   owsRequest.setParameter(paramName, paramValue);
                          }
                          mapscript.msIO_installStdoutToBuffer();
                          int resultCode = map.OWSDispatch(owsRequest);
                          if (resultCode == 0)
                          {
                                   response.Format = mapscript.msIO_stripStdoutBufferContentType();
                                   response.Data = mapscript.msIO_getStdoutBufferBytes();
                          }

                          return response;
                 }
         }
}

Any help would be greatly appreciated.
Brian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20110308/261d85c1/attachment.htm>


More information about the MapServer-users mailing list