Estoy utilizando MVC3 y estoy intentando servir contenido desde https, el problema es que cuando llamo a Url.Content los archivos todavía se sirven desde http usando una URL relativa. Pensé que este problema fue abordado en MVC3, pero parece que no puedo encontrar ninguna solución. ¿Alguien sabe si este problema se resuelve inherentemente en MVC3 y cómo lograrlo o tengo que crear mis propios métodos de ayuda para generar Urls absolutas basadas en el protocolo?Cómo generar direcciones URL absolutas con https en MVC3?
Respuesta
Probablemente pueda implementar su propia solución usando VirtualPathUtility.ToAbsolute. Probablemente algo como esto:
public static class UrlHelperExtension {
public static string Absolute(this UrlHelper url, string relativeOrAbsolute) {
var uri = new Uri(relativeOrAbsolute, UriKind.RelativeOrAbsolute);
if (uri.IsAbsoluteUri) {
return relativeOrAbsolute;
}
// At this point, we know the url is relative.
return VirtualPathUtility.ToAbsolute(relativeOrAbsolute);
}
}
la que se usaría como:
@Url.Absolute(Url.Content("~/Content/Image.png"))
(no hemos probado esto por mí mismo, no dude en jugar alrededor para hacer que funcione bien.)
Este te ayuda a generar URL absolutas para tus archivos de contenido. Para cambiar el esquema de las URL resultantes, puede crear un método de extensión adicional que manipule el esquema de las URL determinadas para que sean HTTPS u otra cosa.
Como señala Khalid en los comentarios, ya hay disponibles métodos de extensión similares en varios proyectos de código abierto que puede utilizar (dado que la licencia lo permite). Un ejemplo uno se puede encontrar here.
Su sugerencia es muy similar a esto de Mike Hadlow. http://www.google.com/codesearch/p?hl=en#MEucUyOL2vo/trunk/Suteki.Shop/Suteki.Common/Extensions/UrlExtensionsHelper.cs&q=SSL%20package:http://sutekishop%5C.googlecode% 5C.com & d = 4 –
No había visto eso antes, actualizaré la respuesta para agregar un enlace a eso. Gracias. – paracycle
Parece que esto también valdría la pena crear un método para Url.ContentAbsolute o similar en lugar de tener que envolverlos cada vez –
Puede utilizar Url.RouteUrl, algunas de las sobrecargas echar un parámetro de protocolo, se ve algo como esto:
Url.RouteUrl("Product", new { itemId = "123456" }, "https");
echar un vistazo a las sobrecargas y ver que uno puede utilizar
Si usted no quiere "construir" la url y sólo desea la ruta completa de la página actual, esto va a hacer el truco
Context.Server.UrlEncode(Context.Request.Url.AbsoluteUri)
sé que no es tan elegante como un método de extensión, pero pensó de compartirlo con fines educativos
Una solución que no utiliza métodos de extensión o codificar el protocolo, según lo sugerido por @BlackTigerX:
Url.RouteUrl("Default", new { Action = "About" }, Request.Url.Scheme)
como se sugiere en el siguiente artículo: http://captaincodeman.com/2010/02/03/absolute-urls-using-mvc-without-extension-methods/
+1 con demasiada frecuencia verá protocolos codificados en estas soluciones ... – Tr1stan
Justo lo que ordenó el dr. – neizan
Esto es exactamente lo que estaba buscando.Mi objetivo era escribir mi componente para que se pudiera implementar en entornos http o https sin cambios, y esto me permitió hacerlo. –
- 1. Cómo unir URL absolutas y relativas?
- 2. de expresiones regulares para que coincida con las dos direcciones URL relativas y absolutas
- 3. PhoneGap en iOS con rutas URL absolutas para activos?
- 4. Generar direcciones URL utilizando T4MVC en una acción de controlador
- 5. Rendimiento: URL absolutas vs. relativas
- 6. la reconstrucción de las direcciones URL absolutas de URLs relativas en una página
- 7. ¿Cómo usar las rutas relativas/absolutas en las URL css?
- 8. Cómo generar URL en django
- 9. php convertir todos los enlaces a las URL absolutas
- 10. ¿La mejor práctica para crear URL absolutas con Zend framework?
- 11. URL sin "http | https"
- 12. ASP.NET MVC3 redirigir desde https a http
- 13. Reescritura de URL https: // http: // en IIS7
- 14. validación de direcciones URL (Objective-C)
- 15. Generar URL en MVC de código subyacente
- 16. direcciones URL prefijo en aplicación Rails
- 17. ¿Qué URL en una página https deben ser https?
- 18. lista de direcciones URL de OpenID
- 19. PHP - reemplace http con https en la URL
- 20. URL relativas vs. absolutas en jQuery Solicitudes AJAX
- 21. URL absolutas (completas) sin "http:" en href HTML
- 22. Cómo generar URL temporales en Django
- 23. RavenDb con ASP.NET MVC 3 - ¿Cómo generar URL con ID?
- 24. generar direcciones a pie con la aplicación Mapas de iOS
- 25. ¿Cómo puedo generar un rango de direcciones IP en Perl?
- 26. ¿Cómo puedo generar slugs URL en Perl?
- 27. Uso de rutas para generar direcciones URL en una tarea de Symfony
- 28. https en default-target-url spring security
- 29. Inhabilitar conversiones absolutas a relativas de TinyMCE URL
- 30. Cargar URL de HTTPS en UIWebView
Las soluciones a continuación funcionan todas muy bien, pero quiero señalar que si se encuentra en un entorno de carga equilibrada, entonces todas las apuestas están apagadas en cuanto a qué URL se generará. –