lunes, 12 de diciembre de 2016

Gridview no se muestra a mayor cantidad de resultados

agregar lo siguiente en el appSettings del web.config:

<add key="aspnet:MaxHttpCollectionKeys" value="2147483647" />
<add key="aspnet:MaxJsonDeserializerMembers" value="2147483647" />

jueves, 13 de octubre de 2016

Web config en Servicio WCF

Hola a todos, al elaborar y publicar servicios WCF, muchas veces no recordamos que colocar en el config; por tal motivo les comparto un ejemplo básico de lo que debería contener:
 

  
    
  
  
    
    
  
  
    
      
        
        
        
          
            
          
        
      
    
    
      
        
          
          
        
      
    
    
      
        
          
          
        
      
    
  


Nota:
Al publicar tu servicio, se deberá modificar la url de la sección :
<add baseAddress="http://localhost:8732/Design_Time_Addresses/SMV.EncuestaSC.WCF/ServiceSC/" />
por la url que corresponda en el servidor web.

viernes, 22 de julio de 2016

COM Excel - Word error: 80070005 Acceso denegado IIS

En mi caso, mi aplicación al tratar de modificar un archivo excel me mostraba el siguiente error:

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied.

la solución que encontré es lo siguiente:

a) Si la app se esta usando ApplicationPoolIdentity, realizar lo siguiente:
  • Presionar las teclas “Windows + R”; ingresar el texto dcomcnfg y presionar el botón Aceptar
  • Servicios de componentes -> Equipos -> Mi PC -> Configuración DCOM, buscar “Microsoft Excel Application” y seleccionar botón derecho propiedades.
  • En Pestaña Identidad, elegir la opción "El usuario interactivo"
  • En pestaña Seguridad, editar para todos los “Customize”, el usuario “IIS_IUSRS“ (si no lo encuentras, búscalo en localización: “Servidor” )

b) Si la app esta usando usuario de aplicación, otra opción sería realizar lo siguiente:
  • Presionar las teclas “Windows + R”; ingresar el texto dcomcnfg y presionar el botón Aceptar
  • Servicios de componentes -> Equipos -> Mi PC -> Configuración DCOM, buscar “Microsoft Excel Application” y seleccionar botón derecho propiedades.
  • En Pestaña Identidad, elegir la opción "Este Usuario" (colocar el usuario de aplicación)
(*) En caso no encuentren "Microsoft Excel Application", pueden probar ingresar a través de la ruta C: WINDOWSSysWOW64> mmc comexp.msc o ejecutando el siguiente comando: mmc comexp.msc /32

(*)Si es archivo word:
realizar los mismos pasos anteriores, pero buscar " Documento Microsoft Word " y / o " Aplicación Microsoft Word " o “Microsoft Word 97 -2003 Document” o algo que diga Word. si aun no encuentra buscar "{00020906-0000-0000-C000-000000000046}".







miércoles, 20 de julio de 2016

ImageButton error Sys.WebForms.PageRequestManagerServerErrorException

Hola..
Posiblemente al trabajar con ImageButton; se les presente el siguiente error:

Sys.WebForms.PageRequestManagerServerErrorException input string was not in a correct format

La solución que encontré después de buscar durante dias :'( fue agregar lo siguiente despues del tag HTML:

 

viernes, 10 de junio de 2016

Enviar correo con imágenes incrustadas

Hola a todos.
Por si alguna vez les piden que envíen correos con imágenes; acá les comparto una forma de poder realizarlo:

 
Public Sub CorreoNet(ByVal CorreoDestinatario As String, CorreoDestinatarioCopia As String, ByVal CorreoRemitente As String, ByVal Name As String, _
                     ByVal Asunto As String, ByVal Host As String)
        'Mensaje:
        Dim Mensaje = "Hola mundo... cargando imagen: "

        Dim reader = File.ReadAllBytes("D:\Demo\Imagenes\iGrupo.png")
        Dim image1 = New MemoryStream(reader)
        Dim av = AlternateView.CreateAlternateViewFromString(Mensaje, Nothing, System.Net.Mime.MediaTypeNames.Text.Html)

        Dim headerImage = New LinkedResource(image1, System.Net.Mime.MediaTypeNames.Image.Jpeg)
        headerImage.ContentId = "companyLogo"
        headerImage.ContentType = New Mime.ContentType("image/png")
        av.LinkedResources.Add(headerImage)

        'Configuracion Mensaje:
        Dim Correo = New Mail.MailMessage()
        Correo.To.Add(CorreoDestinatario)
        If Not CorreoDestinatarioCopia = "" Then Correo.CC.Add(CorreoDestinatarioCopia)
        Correo.From = New Mail.MailAddress(CorreoRemitente, Name, Encoding.UTF8)
        Correo.Subject = Asunto
        Correo.SubjectEncoding = Encoding.UTF8

        'Correo.Body = Mensaje
        Correo.AlternateViews.Add(av)
        Correo.BodyEncoding = Encoding.UTF8
        Correo.Priority = Mail.MailPriority.High
        Correo.IsBodyHtml = True

        'Configuracion SMTP:
        Dim Servidor = New Mail.SmtpClient
        Servidor.Host = Host

        'Enviar Correo:
        Try
            Servidor.Send(Correo)
        Catch ex As Mail.SmtpException
            Throw ex
        End Try
    End Sub
End Class

Ademas deberás incluir incluir los siguientes "Imports":
Imports System.Net
Imports System.Text
Imports System.IO
Imports System.Net.Mail
Saludos.

martes, 22 de marzo de 2016

GroupBy usando expresiones lambda

A continuación, voy a mostrarles como utilizar GroupBy con expresiones lambda. Para estos ejemplos se utilizará la siguiente lista:

Dim lista As New List(Of Object)
lista.Add(New With {.ANIO = 2014, .NUMERO = "1521", .SUELDO = 10})
lista.Add(New With {.ANIO = 2015, .NUMERO = "1521", .SUELDO = 20})
lista.Add(New With {.ANIO = 2015, .NUMERO = "1522", .SUELDO = 5})
lista.Add(New With {.ANIO = 2015, .NUMERO = "1522", .SUELDO = 5})

Caso 1: Agrupación por solo un campo + operador adicional
en el siguiente ejemplo se obtiene la suma de "Sueldos" por año.

Dim p1 = lista.GroupBy(Function(g) g.ANIO).Select(Function(a) New With {.numero = a.Key,
                                                                                    .sum = a.Sum(Function(p) p.SUELDO)}).ToList

Caso 2: Agrupación por varios campos + operador adicional
en el siguiente ejemplo se obtiene la suma de "Sueldos" por año y número.

Dim p2 = lista.GroupBy(Function(g) New With {Key g.ANIO, Key g.NUMERO}). _
                        Select(Function(a) New With {.anio = a.Key.ANIO,
                                                     .num = a.Key.NUMERO,
                                                     .sum = a.ToList.Sum(Function(p) p.SUELDO)}).ToList

Caso 3: Uso de GroupBy como reemplazo del Distinct
el siguiente ejemplo aplica el distinct sobre el campo: "ANIO":

Dim p3 = lista.GroupBy(Function(g) g.ANIO).Select(Function(a) a.First).ToList

en caso se tenga se tenga que aplicar varios campos se utilizará lo siguiente:

Dim p4 = lista.GroupBy(Function(g) g.ANIO And g.NUMERO).Select(Function(a) a.First).ToList

Saludos