martes, 27 de octubre de 2020

FOR LOOP SQL Server

Ciclo while sql server 


Sintaxis

DECLARE @count INT = 0;

WHILE @count < cnt_total
BEGIN [sentencia] SET @count = @count + 1;
END;
Ejemplo:
DECLARE @count  INT = 0;

WHILE @count  < 1000
BEGIN
   select @count
   SET @count  = @count  + 1;
END;


lunes, 12 de octubre de 2020

Visual Studio desactivar debug ContextSwitchDeadlock

 Error al debugear

Managed Debugging Assistant 'ContextSwitchDeadlock'    Message=Managed Debugging Assistant 'ContextSwitchDeadlock' : 'The CLR has been unable to transition from COM context 0x8e0158 to COM context 0x8dffe8 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations.'


Debug > Windows > Exception Settings






domingo, 11 de octubre de 2020

Convertir DataReader a DataTable C# (SqlDataReader to DataTable)

 Puede cargar un archivo DataTabledirectamente desde un lector de datos utilizando el Load()método que acepta un archivo IDataReader.

var dataReader = cmd.ExecuteReader();
var dataTable = new DataTable();
dataTable.Load(dataReader);
o
  var dataTable = new System.Data.DataTable();
   var dt = new System.Data.DataTable();
  SqlDataReader dr;
  dr = cmd.ExecuteReader();
 if (dr.Read())
                    {
                        dataTable.Load(dr);
                        dt = dataTable;
                    }



jueves, 8 de octubre de 2020

Reporting services en visual studio 2019

 Para poder ver los proyectos de reportes en VS 2019 es necesario instalar el siguiente complemento.


Extensions/ Manage Extensions




sábado, 19 de septiembre de 2020

Selected Item Picker XAMARIN no funciona

CLASE DE OBJETO SELECCIONADO

 public class ItemsSourcesModel : ModelBase

    {

        string itemDisplay;

        string itemnId;

        public string ItemDisplay

        {

            get { return itemDisplay; }

            set

            {

                itemDisplay = value;

                OnPropertyChanged();

            }

        }

        public string ItemnId

        {

            get { return itemnId; }

            set

            {

                itemnId = value;

                OnPropertyChanged();

            }

        } 

    }


// VIEW MODEL Selected Item

public ItemsSourcesModel SelectedItemPicker1

        {

            get { return _selectedItemPicker1; }

            set

            {

                _selectedItemPicker1 = value;

                OnPropertyChanged("SelectedItemPicker1");

            }

        }

 

 ASIGNACION DE VALOR


 ItemsSourcesModel itemSelect = new ItemsSourcesModel();

 itemSelect.ItemnId = “1”;

 itemSelect.ItemDisplay = “Valor 1”;                         

 SelectedItemPicker1 = itemSelect;


// SOLUCION:

En la clase se debe agragar la interfaz IEquatable, con esto me funciono

 public class ItemsSourcesModel : ModelBase , IEquatable<ItemsSourcesModel>

    {
        string itemDisplay;
        string itemnId;
        public string ItemDisplay
        {
            get { return itemDisplay; }
            set
            {
                itemDisplay = value;
                OnPropertyChanged();
            }
        }
        public string ItemnId
        {
            get { return itemnId; }
            set
            {
                itemnId = value;
                OnPropertyChanged();
            }
        }

        public bool Equals(ItemsSourcesModel other)
        {
            if (other == null) return false;
            return (this.ItemDisplay.Equals(other.ItemDisplay));
        }
    }

sábado, 12 de septiembre de 2020

jueves, 10 de septiembre de 2020

Poblemas con cookies Chrome 80 SameSite IIS

 Con el lanzamiento estable de Chrome 80 este mes, Chrome comenzará a aplicar un nuevo sistema de clasificación de cookies seguro por defecto, tratando las cookies que no tienen un valor de SameSite declarado como las  cookies de SameSite = Lax . Solo cookies configuradas como SameSite = None; Secure estará disponible en contextos de terceros, siempre que se acceda a ellos desde conexiones seguras.

Antecedentes.

 Las Cookies es uno de los métodos para agregar y mantener de forma persistentes variables de estado para sitios web. Durante los años las capacidades han crecido y evolucionado, dejando en las plataformas algunas cuestiones problemáticas de legado. Para resolver esto, en los navegadores de internet (Chrome, Firefox y Edge) están realizando cambios en su comportamiento para reforzar los elementos por defecto para conservar la privacidad. 

Cambios al comportamiento por default sin SameSite Strict

En los nuevos cambios de seguridad de los navegadores establecen el valor Lax a la variable SameSite, esto normalmente es omitido por los desarrolladores. La introducción del atributo SameSite en una cookie, provee tres diferentes formas de controlar el comportamiento:


Strict

Con este valor en la cookie solo se podría enviar en el contexto del dominio que las genera (first-party), es decir, la cookie solo podría ser enviado si el sitio para la cookie coincide con el sitio actual. No envía ninguna cookie en las peticiones que se realizan desde sitios diferentes a donde se originaron. • Set-Cookie: promo_shown=1; SameSite=Strict 

Lax (Default). 

Con valor Lax(relajado) las cookies no se envían, solo si el usuario selecciona cualquier otro enlace del sitio las cookies pueden enviarse. • Set-Cookie: promo_shown=1; SameSite=Lax 

None. 

Las cookies pueden ser enviadas en todos los contextos, lo que significa que puedes usar este valor para comunicar claramente que quieres intencionalmente que las cookies sean enviadas en contexto de dominios externos (third-party) • Set-Cookie: promo_shown=1; SameSite=Lax Agregando la directiva Secure al final de la declaración de la cookie, significa que requiere un contexto de seguridad. Set-Cookie: widget_session=abc123; SameSite=None; Secure 


Solución - Configuración

 La solución puede estar orientada a definir las propiedades de seguridad a nivel web.config de cada aplicación o configurar el URL Rewrite desde el IIS a nivel Sitio o a nivel raíz del IIS, este último fue el que utilizamos ya que se hereda la configuración a todos los sitios y aplicaciones internas del servidor. El primer paso es seleccionar la opción URL Rewrite de la lista de características del servidor web: 

Sobre la configuración general de iis:

Dentro de la vista de URL Rewrite seleccionamos la opción View Server Variables

Adicionamos una nueva variable del servidor nombrada RESPONSE_Set-Cookie:

Regresamos a la vista de reglas dando click en la opción "Back to Rules", agregamos una nueva regla seleccionando la opción Add Rule(s) de tipo Outbound rules en blanco:

 

Proporcionamos las siguientes características de la regla:

Por ultimo se recomienda reiniciar el iis