A MapServer object extension for performing network analysis within a stateless environment.
Use the ISupportErrorInfo method InterfaceSupportsErrorInfo to determine if the object supports extended error information. If the object supports extended error info, VC++ developers should use the OLE/COM IErrorInfo interface to access the ErrorInfo object. Visual Basic developers should use the global error object Err to retrieve this extended error information.
| Interfaces | Description |
|---|---|
| ILogSupport (esriSystem) | Provides access to methods for initializing an object for logging. |
| INAServer | Provides access to members that perform network analysis in a stateless environment within a MapServer. |
| IObjectActivate (esriSystem) | Provides access to methods for activating and deactivating objects. |
| IObjectConstruct (esriSystem) | Provides access to methods for constructing an object. |
| IRequestHandler (esriSystem) | Provides access to members that control handing of request messages. |
| IRequestHandler2 (esriSystem) | Provides access to members that control handing of request messages. |
| IServerObjectExtension (esriServer) | Provides access to the members that control a server object extension. |
| ISupportErrorInfo | Indicates whether a specific interface can return Automation error objects. |
The NAServer is a MapServer object extension that can be used to perform network analysis in a stateless environment using ArcGIS Server.
This example illustrates connecting to a NAServer web service via a web reference and getting the names of the route layers.
// Assumes you've created a web reference to web service named "SanFrancisco"
SanFrancisco_NAServer pNAServer = new SanFrancisco_NAServer();
pNAServer.Url = "http://localhost/ArcGIS/Services/SanFrancisco/MapServer/NAServer";
// Use NAServer to get analysis layer names
string[] routeLayerNames = pNAServer.GetNALayerNames(esriNAServerLayerType.esriNAServerRouteLayer);
This example illustrates connecting to a NAServer within a map server object named "SanFrancisco" and getting the names of the route layers.
// Connect to ArcGIS Server and get the MapServer's ServerContext
IGISServerConnection pGISServerCon = new GISServerConnection(); pGISServerCon.Connect("localhost");
IServerObjectManager pSOM = pGISServerCon.ServerObjectManager;
IServerContext pServerContext = pSOM.CreateServerContext("SanFrancisco","MapServer");
// Get the NAServer server object extension
IServerObjectExtensionManager pSOEM = pServerContext.ServerObject as IServerObjectExtensionManager;
INAServer pNAServer = pSOEM.FindExtensionByName("NAServer") as INAServer;
// Use NAServer to get analysis layer names
string[] routeLayerNames = pNAServer.GetNALayerNames(esriNAServerLayerType.esriNAServerRouteLayer);
// Release the context since you're done with it
pServerContext.ReleaseContext();
This demonstrates how to connect to a NAServer object using the ADF web controls and getting the names of the route layers.
//Get the ServerContext from the WebControl and get the MapServer's ServerContext
ServerConnection conn = new ESRI.ArcGIS.Server.WebControls.ServerConnection("localhost",true);
IServerObjectManager pSOM = conn.ServerObjectManager;
IServerContext pServerContext = pSOM.CreateServerContext("SanFrancisco", "MapServer");\
// Get the NAServer server object extension
IServerObjectExtensionManager pSOEM =
pServerContext.ServerObject as IServerObjectExtensionManager;
INAServer pNAServer = pSOEM.FindExtensionByName("NAServer") as INAServer;
// Use NAServer to get analysis layer names
string[] routeLayerNames = pNAServer.GetNALayerNames(esriNAServerLayerType.esriNAServerRouteLayer);
// Release the context since you're done with it
pServerContext.ReleaseContext();