martes, 21 de febrero de 2017
Aunque IIS Express está diseñado principalmente para ser utilizado por desarrolladores en el interior su equipo de trabajo, seguro que la mayoría sabéis que haciendo un par de cambios en la configuración también es posible utilizarlo desde equipos externos, por ejemplo para poder hacer pruebas de una web o servicio desde otros dispositivos conectados a la misma red.
Es sencillo encontrar cómo hacerlo porque hay mucho escrito al respecto en la red, y sin embargo de vez en cuando me encuentro con desarrolladores que no saben que esto es posible hacerlo, así que este post va por vosotros ;D
Partiremos de un proyecto ASP.NET 4.x creado en Visual Studio 2015 o 2017, da igual si se trata de una aplicación MVC, Web Forms, Web API o lo que sea. Para desarrollar el ejemplo, imaginemos que al ejecutarlo en local estamos usando la URL http://localhost:3803/.
Veamos paso a paso cómo acceder a esta aplicación desde otro equipo conectado a la red local, y cómo solucionar algunos de los problemas que podemos encontrar por el camino.
Es sencillo encontrar cómo hacerlo porque hay mucho escrito al respecto en la red, y sin embargo de vez en cuando me encuentro con desarrolladores que no saben que esto es posible hacerlo, así que este post va por vosotros ;D
Partiremos de un proyecto ASP.NET 4.x creado en Visual Studio 2015 o 2017, da igual si se trata de una aplicación MVC, Web Forms, Web API o lo que sea. Para desarrollar el ejemplo, imaginemos que al ejecutarlo en local estamos usando la URL http://localhost:3803/.
Veamos paso a paso cómo acceder a esta aplicación desde otro equipo conectado a la red local, y cómo solucionar algunos de los problemas que podemos encontrar por el camino.
Publicado por José M. Aguilar a las 8:55 a. m.
Hay
13 comentarios, ¡participa tú también!
Etiquetas: trucos
lunes, 20 de febrero de 2017
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
.NET
- Happy 15th Birthday .NET!
Beth Massi - The week in .NET – On .NET with Phil Haack, Readline
Bertrand Le Roy - Cómo crear aplicaciones multilingües con C# y .NET
Jorge Durán - Ultimate NLog guide for .NET logging – 19 best practices, resources, and tips
Matt Watson - .NET Renaissance
Mark Rendle - Caching for Non-Web Applications – Part 2
Paul D. Sheriff - Threading in C# (PDF)
Joe Albahari
martes, 14 de febrero de 2017
Hace algunos meses comentábamos por aquí cómo en ASP.NET Core es posible modificar los archivos de configuración de una aplicación en caliente, sin necesidad de detenerla, siendo los cambios aplicados de forma inmediata.
En aquél momento ya vimos que era realmente sencillo conseguirlo cuando usábamos settings no tipados, bastaba con añadir el parámetro
En aquél momento ya vimos que era realmente sencillo conseguirlo cuando usábamos settings no tipados, bastaba con añadir el parámetro
reloadOnChanges
a la hora de añadir el origen de configuración, como en el siguiente ejemplo:public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); }Sin embargo, también vimos que conseguir lo mismo cuando queríamos acceder a los settings de forma tipada era algo más engorroso, puesto que había que configurar manualmente el proceso de recarga y bindeado de datos con la instancia de la clase de configuración, para poder acceder luego a ella a través de un objeto
IOptions<T>
disponible en el contenedor de dependencias.
lunes, 13 de febrero de 2017
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
.NET
- Qué debe saber un desarrollador .NET en 2017
CampusMVP - When a disk cache performs better than an in-memory cache (befriending the .NET GC)
Dan Roberts - C#7: Better Performance with Ref Locals, and Ref and Async Returns
Jeff Yates - The week in .NET – On .NET on Docker and new Core tooling, Benchmark.NET, Magicka
Bertrand Le Roy - The 68 things the CLR does before executing a single line of your code
Matt Warren - What are non generic collections in C#?
Sanskriti - Caching for Non-Web Applications – Part 1
Paul D. Sheriff
martes, 7 de febrero de 2017
Durante el proceso de negociación de contenidos en un API desarrollado con ASP.NET Core MVC, lo habitual es que el output formatter utilizado para componer el resultado enviado de vuelta al cliente sea seleccionado a partir de lo indicado por el cliente en la cabecera Accept de la petición HTTP, pero en este post vamos a ver que esto no tiene por qué ser necesariamente así.
Por ejemplo, supongamos que tenemos una aplicación MVC con un controlador que expone un servicio como el siguiente:
Por ejemplo, supongamos que tenemos una aplicación MVC con un controlador que expone un servicio como el siguiente:
[Route("api/contacts")] public class ContactsController : Controller { private readonly IContactRepository _repository; public ContactsController(IContactRepository repository) { _repository = repository; } [HttpGet("{id}")] public IActionResult Get(int id) { var contact = _repository.Get(id); if (contact == null) return NotFound(); return Ok(contact); } }Esta acción, que retornaría un objeto de tipo
Contact
del modelo de nuestra aplicación, podría ser fácilmente utilizada desde otras capas o sistemas, por ejemplo como sigue:// Petición: GET http://localhost:2805/api/contacts/1 HTTP/1.1 Accept: application/json // Respuesta: HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Content-Length: 51 {"id":1,"name":"John Smith","phone":"998-12-32-12"}
lunes, 6 de febrero de 2017
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
.NET
- The .NET Language Strategy
Mads Torgersen - C#7: Local Functions
Jeff Yates - Pattern Matching in C# 7.0 Case Blocks
Tim Patrick - Typemock o cómo mockear como un campeón.
Leo Micheloni - When Is Easter?
John Simmons - Dissecting the new() constraint in C#: a perfect example of a leaky abstraction
Sergey Teplyakov - The week in .NET – On .NET on public speaking, ndepend, CrazyCore, The Perils of Man
Bertrand Le Roy - Creating a portable and embedded Chocolatey Package
Rick Strahl - Application Insights telemetry processors
Maarten Balliauw - Build Your Own ASP.NET Cache with WeakReferences
Peter Vogel - Get Started with Unit Testing – using xUnit and Moq
Rushfive - Short-circuit Evaluation in C#
Shamseer K.