5 votos

Se puede utilizar ArcObjects en un MVC servicio en la v10.1

Estoy slighlty confundirse con los cambios en la versión 10.1 y entender esta versión ya no es compatible con DCOM o remoto de arcobjects.

Se puede utilizar ArcObjects en un webservice (en mi caso una .NET MVC 4 servicio) que se implementa en el ArcGIS Server host (por lo que no remoto) y los usos de ArcObjects para realizar la edición de un gdb featureclass?

O es la única manera de ir por el SOE marco?

Si usted puede utilizar ArcObjects en el .NET MVC servicio existen ramificaciones de hacerlo a través de el uso de un SOE?

3voto

Adam Puntos 1

usted puede utilizar arcobjects en un MVC servicio (o cualquier servicio para el caso) siempre y cuando el / los servicio(s) residen en el mismo servidor como Servidor de ArcGIS. El Uso De ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.Código de producto.Servidor) y ... serverStatus = ao.Inicializar(esriLicenseProductCode.esriLicenseProductCodeArcServer);

public HttpResponseMessage Post([FromBody] List<ModelRequest> requests)
    {
        //request not getting through
        //verify TrowIfMaxHttpCollectionKeysExceeded
        //limits the amount of collections sent (default 1000) overide with below.
        //<appSettings>
        //<add key="aspnet:MaxHttpCollectionKeys" value="1001" />
        //</appSettings>
        if (requests == null)
        {
            return CreateResponseMessage(HttpStatusCode.InternalServerError, "Unhandled Exception", "Request Is Null");
        }

        HttpResponseMessage returnMessage = CreateResponseMessage(HttpStatusCode.InternalServerError, "Unhandled Exception", "Task Failed"); ;

        var sta = new StaTaskScheduler(numberOfThreads: 1);
        var task = Task.Factory.StartNew(() =>
        {
            //do work in sta thread
            returnMessage = DoWork(requests);
        }, CancellationToken.None, TaskCreationOptions.None, sta);

        Task.WaitAll(task);

        return returnMessage;

    }

    private HttpResponseMessage DoWork(List<ModelRequest> requests)
    {
        //now in StaThread
        string staVerify = Thread.CurrentThread.GetApartmentState().ToString();

        //Do ArcObjects coding here... make sure ALL arcobjects are created in the
        //StaThread. Watch out for member level variables that are created in static
        //classes for example.

        return Request.CreateResponse(HttpStatusCode.OK, myModelResults, "application/json");
    }

    /// <summary>
    /// Create an HTTP custom response.
    /// </summary>
    /// <param name="code">HTTP Status Code</param>
    /// <param name="title">title of response message.</param>
    /// <param name="content">response message content.</param>
    /// <returns>HttpResponseMessage</returns>
    private HttpResponseMessage CreateResponseMessage(HttpStatusCode code, string title, string content)
    {
        var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
        {
            Content = new StringContent(content),
            ReasonPhrase = title
        };

        return resp;
    }

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X