miércoles, 15 de diciembre de 2021

PowerAutomate - Como Eliminar permisos a un archivo dentro de una biblioteca de SharePoint

Bueno me tope con esta necesidad, para ello dentro de un flujo de Power Automate, vamos a agregar un paso llamado "Enviar una solicitud HTTP a SharePoint"

Nos pide la siguiente información:

Dirección del sitio: [https://mitenant.sharepoint.com/sites/misitio]

Método: Post

URI: _api/web/Lists([Id de la lista o biblioteca])/GetItemById([Id del archivo])/UpdateDocumentSharingInfo

Encabezados:

Content-type : application/json;odata=verbose

Cuerpo:

{

"userRoleAssignments":[

{

"UserId": "Grupo Integrantes",

"Role":0

},

{

"UserId" : "Grupo Propietarios",

"Role":0

}

],

"validateExistingPermissions":false,

"additiveMode":false,

"sendServerManagedNotification":false,

"customMessage":null,

"includeAnonymousLinksInNotification":false,

"propagateAcl":true

}

Bueno algunos comentarios imporantes de los parámetros enviados a continuación:

[Id de la lista o biblioteca]: Para ello debes de ir a la configuración de la biblioteca y en la url te parecera el id de la biblioteca que estas viendo su configuración.

[Id del archivo]: Id del archivo que se desea cambiar el permiso.

"UserId": Colocar el nombre del grupo o usuario que se desea eliminar el permiso.

"Role" : Colocar 0 para quitar el permiso al grupo, 1 para solo ver, 2 para editar y 3 para control total.


Nota: Tener mucho cuidado con la notación json que una cadenda de caracteres mal escripta en el envio de http y dará error. Cuidar las "S" y comas.

PowerAutomate4fun!,


Juan Manuel Herrera Ocheita

miércoles, 8 de diciembre de 2021

PowerAutomate - Como eliminar un archivo de excel que esta en uso

 Este error es muy común cuando estamos manipulando archivos de Excel en SharePoint,  La tarea de SharePoint de eliminar el archivo nos indica el siguiente error:

the file myfile.xlsx is locked for shared use by ....

A través de la tarea de SharePoint Enviar una solicitud HTTP a SharePoint podemos evitar el bloqueo del archivo de excel.


la sintaxis de la url debe de ser la siguiente:

_api/web/Lists/GetByTitle('DocLib')/GetItemById(ID)/recycle

El paso o la tarea se ve así:


Debe de seleccionar el sitio y reemplazar el nombre de la biblioteca en el texto 'DocLib' y el Id que aparece en parentesis.


Fuente original: http://www.cleverworkarounds.com/2021/02/21/how-to-clear-annoying-excel-file-locks-in-power-automate/


PowerAutomate4Fun!,


Juan Manuel Herrera Ocheita

domingo, 28 de noviembre de 2021

Definición de Ocelot gateway en una Api Web Mínima Net 6

Para los amigos que ya estan pasando sus aplicaciones a Net 6 o bien estan revisando los temas relacionados con el nuevo Framework Net 6.

Las Apis Minimas son una nueva mejora introducida en esta versión 6. que  Minimiza el código para facilitar la legibilidad, hacerlo más eficiente y fácil.

Aquí las 6 líneas para definir el Gateway de Ocelot en Net 6.

var builder = WebApplication.CreateBuilder(args);

builder.Configuration.AddJsonFile($"ocelot.json", optional: false, reloadOnChange: true);

builder.Services.AddOcelot();

var app = builder.Build();

app.UseOcelot();

app.Run();

En el archivo del proyeto agregamos algunos Global Using para reducir la cantidad de líneas.  A continuación la sección agregada de los Goblal Using:

  <ItemGroup>

    <Using Include="Ocelot.DependencyInjection"/>

    <Using Include="Ocelot.Middleware"/>

  </ItemGroup>


Y por ultimo recordad amigos que el archivo json de ocelot según las especificaciones a 28/11/2021 deberaís utilizar Routes en vez de Reroutes y que la parte de configuración de DownstreamHostAndPorts va unidad y es un arreglo de objetos. como muestra abajo:

"DownstreamHostAndPorts": [

        {

          "Host": "localhost",

          "Port": 9901

        }

      ]

Archivo completo de  ocelot.json básico a continuación:

{

  "Routes": [

    {

      "DownstreamPathTemplate": "/api/customers",

      "DownstreamScheme": "https",

      "DownstreamHostAndPorts": [

        {

          "Host": "localhost",

          "Port": 9901

        }

      ],

      "UpstreamPathTemplate": "/customers",

      "UpstreamHttpMethod": [ "Get" ]

    },

    {

      "DownstreamPathTemplate": "/api/products",

      "DownstreamScheme": "https",

      "DownstreamHostAndPorts": [

        {

          "Host": "localhost",

          "Port": 9902

        }

      ],

      "UpstreamPathTemplate": "/products",

      "UpstreamHttpMethod": [ "Get" ]

    }

  ],

  "GlobalConfiguration": {

    "RequestIdKey": "OcRequestId",

    "AdministrationPath": "/administration"

  }

}

Net64Fun!,

Juan Manuel Herrera Ocheita




jueves, 25 de noviembre de 2021

Asistente para actualizar tu aplicación Web MVC 5 en Net 6

 Net 6 viene con todo y para todos.  Y eso incluye un asistente para actualizar tus aplicaciones "Legacy" hacia Net 6 (la versión multiplataforma, de soporte extendido y de alto rendimiento).

El asistente se llama Upgrade Assistant.

Lo puedes instalar desde la línea de comando si tienes ya instalado Net 6 SDK con la siguiente línea:

dotnet tool install -g upgrade-assistant

Y para realizar un análisis de tu solución ejecuta la siguiente línea de comando desde el directorio de la solución:

upgrade-assistant analyze .

Nota:  No olivides el punto al final.




Esto generará un reporte que puedes ver desde VSCode con SARIF Viewer, como se muestra abajo:



Cuando ya hayas revisado en detalle el reporte y te decidas a actualizarlo (obvio en una carpeta de pruebas y no directamente en el repositorio local de tu proyecto).  Puede ejecutar la actualización del proyecto con la siguiente línea de comando:

upgrade-assistant upgrade

Net64Fun!;)


Juan Manuel Herrera Ocheita

lunes, 22 de noviembre de 2021

Net 6 and VS 2020 really Rocks!!! (realemente esta buenisimo)

Net 6 es un parte aguas para el desarrollo en el mundo empresarial, una única flataforma para desarrollar en todos los dispositovos, es rápido, ágil y escribiremos mucho menos código del que estamos acostumbrados.

Opciones como HotReload, harán nuestro trabajo más productivo y eficiente.

Apis mínimas o Minimal Web Apis.    Esto no solo se trata de escribir menos lineas de código es necesario cambiar de paradigma, pensar en  "micro" servicios y organizar tu aplicación de tal forma que aproveches esta arquitectura.  No es para todos ni para todas las aplicaciones pero tiene un gran potencial si encuentras como aprofecharlas.

Estamos ya finalmente sobre 64 bits, full en VS 2020, hasta el VS 2019 corre mas rapido dese que instale la ultima actualización del producto.  Esto lo podemos disfrutar con el intelllisense que vuela y mucho mas sugerencias nos hace que las versiones anteriores... relamente Rocks!.

No quiero dejar de mencionar el manejo de nulos que es el mayor error que sucede en la programación en el ambiente .NET. así que me parece genial que ya haya una alternativa para minimizar este error que agobia a tantos usuarios y programadores incautos que no validan los nulos.

Aquí una probadita de lo que les menciono amigos de la codificación.

jueves, 18 de noviembre de 2021

Ocelot error The remote certificate is invalid according to the validation procedure

 Este error es producido por el gateway de ocelot  cuando se instala un self certificate, por lo que hay que configurar el archivo json de ocelot para que acepte cualquier certificado (no se recomienda para ambientes productivos).

"Routes": [
    {
      "DownstreamPathTemplate": "/api/Tareas/{id}",
      "DownstreamScheme": "https",
      "DownstreamHostAndPorts": [
        {
          "Host": "myDebServerName",
          "Port": 444
        }
      ],
      "UpstreamPathTemplate": "/api/tareitas/{id}",
      "UpstreamHttpMethod": [ "POST", "PUT", "GET" ],

      "DangerousAcceptAnyServerCertificateValidator": true
    }
Gracias a David Ayala y a stackoverflow por el tip.
.net core - Ocelot Disable SSL validation with "DangerousAcceptAnyServerCertificateValidator" - Stack Overflow

Code4Fun!,
Juan Manuel Herrera Ocheita


miércoles, 10 de noviembre de 2021

Crear un certificado propio desde powershell en Windows Server 2016 en adelante

Muchas veces es necesario crear certificados SSL de consumo interno dentro de una red local para ambientes de pruebas, pilotos y a veces de producción.

Desde powershell podemos invocar el comando

New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My

Luego ya podemos utilizarlo en IIS y aplicarlo a los sitios web.

Algunas veces se debe de copiar el certificado de la carpeta personal a Trusted Certificate, esto ayuda a que el navegador no despliegue el certificado como invalido.


Para ello se invoca desde el servidor mmc y se agrega el add-in Server Certificates.


PowerShell4Fun!,


Juan Manuel Herrera Ocheita



viernes, 29 de octubre de 2021

Power Automate extraer la extension de un nombre de Archivo

 En Power Automate podemos utlizar una expresión para extrar de una variable que contiene el nombre completo del archivo la extensión de forma muy sencilla, como se muestra abajo

last(split(variables('NombreArchivo'),'.'))


PowerAutomate4Fun!,

Juan Manuel Herrera