none
Consumir un webservice desde un plugins para CRM 2011 RRS feed

  • Pregunta

  • Buenas tardes, estoy creando un plugins que se conecte a un webservices, pero me da error cuando cuando se ejecuta este es el error 

     

     Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Unexpected exception from plug-in (Execute): plgBloquearTarjeta.plgBloqueo: System.Security.SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.Detail: 

    <OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">

      <ErrorCode>-2147220956</ErrorCode>

      <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />

      <Message>Unexpected exception from plug-in (Execute): plgBloquearTarjeta.plgBloqueo: System.Security.SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.</Message>

      <Timestamp>2011-03-25T23:03:17.612944Z</Timestamp>

      <InnerFault i:nil="true" />

      <TraceText>

     

    [plgBloquearTarjeta: plgBloquearTarjeta.plgBloqueo]

    [fc69f0a0-3257-e011-924a-001185c230e1: plgBloquearTarjeta.plgBloqueo: Create of new_bloqueotarjeta]

     

     

    </TraceText>

    </OrganizationServiceFault>

    Alguien quien me pueda ayudar, 

     

    viernes, 25 de marzo de 2011 23:05

Todas las respuestas

  • hola tiene pinta de que algo falta, pero necesitaría si es posible ver el código donde falla para ver si podemos ayudarte mejor...

    un saludo,


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com
    lunes, 28 de marzo de 2011 7:31
    Moderador
  • Buenos dias, te comento, 

    En la version anterior tenia algo parecido y me funciono, 

    Tengo publicado el webservice  SOAP en el mismo servidor y por motivos de prueba tiene habilitado la autenticacion anónima , solo agregue el servio como un "Web References"  y luego procedí a instancia un ojeo de ese tipo y basandome en un ejemplo que encontre con la crecion de cuentas puse eso 

     

      public void Execute(IServiceProvider serviceProvider)

    {

     

     

                // Obtain the execution context from the service provider.

                IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

                IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

                IOrganizationService service = factory.CreateOrganizationService(context.UserId);

     

     

                //Extract the tracing service for use in plug-in debugging.

                ITracingService tracingService =

                    (ITracingService)serviceProvider.GetService(typeof(ITracingService));

     

                 // The InputParameters collection contains all the data passed in the message request.

    if (context.InputParameters.Contains("Target") &&

    context.InputParameters["Target"] is Entity)

                {

     

     

                    // Obtain the target entity from the input parmameters.

    Entity entity = (Entity)context.InputParameters["Target"];

                    //</snippetAccountNumberPlugin2>

     

                    // Verify that the target entity represents an account.

                    // If not, this plug-in was not registered correctly.

                    if (entity.LogicalName == "new_bloqueotarjetas") 

                    {

                        // An accountnumber attribute should not already exist because

                        // it is system generated.

     

     

     

     

                        if (entity.Attributes.Contains("new_ntarjeta") == true)

    {

    try{

    tarjetas.Service serv = new tarjetas.Service(); String[] resp = serv.bloquearTarjeta("xxxxxxxxxxxxxxxx").Split(',');

    }

    catch(Exception e){

    new InvalidPluginExecutionException(ex.toString());

     

              }

     }

    }

    }

    }

    Este es el segmento del codigo. si alquien sabe como resuelvo este problema o que me indique que estoy haciendo mal se lo agradeceria mucho.

    este es el error que muestra, 

     

     

    Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: System.Security.SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

       at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)

       at System.Security.CodeAccessPermission.Demand()

       at System.Net.HttpWebRequest.CheckConnectPermission(Uri uri, Boolean needExecutionContext)

       at System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint)

       at System.Net.HttpRequestCreator.Create(Uri Uri)

       at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)

       at System.Web.Services.Protocols.WebClientProtocol.GetWebRequest(Uri uri)

       at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest(Uri uri)

       at System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri)

       at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)

       at plgBloquearTarjeta.tarjetas.Service.bloquearTarjeta(String ntarjeta)

       at plgBloquearTarjeta.plgBloqueo.Execute(IServiceProvider serviceProvider)

    The action that failed was:

    Demand

    The type of the first permission that failed was:

    System.Net.WebPermission

    The Zone of the assembly that failed was:

    MyComputerDetail: 

    <OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">

      <ErrorCode>-2147220891</ErrorCode>

      <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic">

        <KeyValuePairOfstringanyType>

          <d2p1:key>OperationStatus</d2p1:key>

          <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">0</d2p1:value>

        </KeyValuePairOfstringanyType>

      </ErrorDetails>

      <Message>System.Security.SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

       at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark&amp; stackMark, Boolean isPermSet)

       at System.Security.CodeAccessPermission.Demand()

       at System.Net.HttpWebRequest.CheckConnectPermission(Uri uri, Boolean needExecutionContext)

       at System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint)

       at System.Net.HttpRequestCreator.Create(Uri Uri)

       at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)

       at System.Web.Services.Protocols.WebClientProtocol.GetWebRequest(Uri uri)

       at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest(Uri uri)

       at System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri)

       at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)

       at plgBloquearTarjeta.tarjetas.Service.bloquearTarjeta(String ntarjeta)

       at plgBloquearTarjeta.plgBloqueo.Execute(IServiceProvider serviceProvider)

    The action that failed was:

    Demand

    The type of the first permission that failed was:

    System.Net.WebPermission

    The Zone of the assembly that failed was:

    MyComputer</Message>

      <Timestamp>2011-03-28T17:16:49.7145556Z</Timestamp>

      <InnerFault i:nil="true" />

      <TraceText>

     

    [plgBloquearTarjeta: plgBloquearTarjeta.plgBloqueo]

    [fc69f0a0-3257-e011-924a-001185c230e1: plgBloquearTarjeta.plgBloqueo: Create of new_bloqueotarjeta]

     

     

    </TraceText>

    </OrganizationServiceFault>

     

    lunes, 28 de marzo de 2011 17:51
  • Hola WDiaz, no se muy bien por que, pero parece que hay algun tema de seguridad. Esta llegando a hacer la llamada al web service? o da el error antes? Si tu plugin lo tienes registrado en el Sandbox, prueba registrarlo en "None".

    un saludo,

     


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com
    lunes, 28 de marzo de 2011 21:31
    Moderador
  • Buenas tarde, el error se muestra cuando instancia el webservice, ya probé registrarlo en "none" pero me marca un error, estamos instalando nuevamente para ver si no fue un problema de la instalación,  cuando termine pruebo nuevamente y les cuento.
    martes, 29 de marzo de 2011 21:33
  • Ok, cuentanos que tal. de todos modos, ten cuidado de donde esta ubicado tu web service. revisa que el mismo esté en otro sitio web que no sea el de CRM.

    un saludo


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com
    jueves, 31 de marzo de 2011 7:19
    Moderador
  • Buenos dias, ayer se termino la instalación y procedi a realizar las pruebas, 

    - Trate de consumir un webservice  publicado en otro servidor en el mismo segmento de red des javascript en el procedimiento onchange y me mostros "Permiso denegado" revisando el servidor de ms crm 2011  ne los evento me maco este problema 

    Sandbox Host - Access Denied.

     Host: CRMTEST

     User: DOMINIO\USUARIO

    instale una aplicación realizada en vs2010 en el servidor del crm consumiendo ese servicio y lo hace correctamente no se que paso debo de seguir para que esto funcione.  

    cuando pruebo el plugins me tira esto 

    Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Access Denied. Reference number for administrators or support: #101ADFFCDetail: 


    • Editado WDIAZ jueves, 31 de marzo de 2011 15:50 edicion
    jueves, 31 de marzo de 2011 15:40
  • Buenos dias, ayer se termino la instalación y procedi a realizar las pruebas, 

    - Trate de consumir un webservice  publicado en otro servidor en el mismo segmento de red des javascript en el procedimiento onchange y me mostros "Permiso denegado" revisando el servidor de ms crm 2011  ne los evento me maco este problema 

    Sandbox Host - Access Denied.

     Host: CRMTEST

     User: DOMINIO\USUARIO

    instale una aplicación realizada en vs2010 en el servidor del crm consumiendo ese servicio y lo hace correctamente no se que paso debo de seguir para que esto funcione.  

    cuando pruebo el plugins me tira esto 

    Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Access Denied. Reference number for administrators or support: #101ADFFCDetail: 


    Ya me fue posible registrar el plugins fuera de la "sandbox" y me conecto al web service, ahora mi problema es el script que uso con los evento onchange  que me envia el error antes mencionado de "Permiso denegado" pero lo probe ingresar al crm con otro usuario con el que esta corriendo el pool y con ese no hay problema, alguna idea de que tengo que hacer para que funcione esto, y alguna forma de ejecutar en desde el plugins alguna alerta cuando se haya realizado bien algún proceso para que el usuario que lo este utilizando se de cuenta, ejemplo un mensaje alert()

     

     

    jueves, 31 de marzo de 2011 18:33