Pregunta

(Soy nuevo en .Net y en el mundo de Microsoft en general, tengo experiencia en Java y Tomcat, así que téngalo en cuenta).

Estoy trabajando en mi primera aplicación .Net, usando Visual Studio 2013, C#, .Net 4.5, MVC 5 y EF 6.Es una aplicación basada en web bastante simple, que utiliza autenticación de Windows y grupos de Active Directory para obtener autorización para realizar operaciones CRUD bastante básicas en una tabla en una base de datos de SQL Server.

Aún no he implementado la aplicación.Todavía lo estoy desarrollando y probándolo en mi PC (con Windows 7).Cuando presiono Ctrl-F5 para probar la aplicación en Internet Explorer o Google Chrome, todo funciona bien.

Sin embargo, si le digo a Visual Studio que acceda a él en Firefox, muestra la página SIN cualquier CSS o JavaScript.Puedo hacer clic en enlaces dentro de la aplicación y navegar a las distintas páginas, y todas funcionan bien.Simplemente se muestran sin CSS ni JavaScript funcional.Cuando intento ver manualmente uno de los archivos CSS o JavaScript, aparece un error interno del servidor (Error HTTP 500).La verificación del archivo de registro muestra un código de estado 500 para cada uno de los archivos CSS y JavaScript que la página estaba intentando cargar.

Estoy desconcertado, porque funciona bien desde Internet Explorer y Chrome.¿Cómo podría el uso de un navegador web diferente causar este error interno del servidor?

Publicaría parte del código, pero en este punto no tengo idea de qué sería útil ver.(Podría mostrar qué tipo de información adicional está registrando IIS Express, si corresponde, pero no estoy seguro de dónde encontrarla, aparte de la línea que muestra el código de estado 500).

En algún momento bastante temprano en el desarrollo, me di cuenta de que había nombrado "versión" a algún campo de la base de datos cuando quería que se llamara "Versión" (en mayúscula).Hice una búsqueda/reemplazo global en toda la solución en esa cadena, en lugar de cambiar el nombre del campo.Es posible que ese proceso haya alterado algo importante, pero hice una búsqueda global en "Versión" (y en "versión") y no encontré nada importante.

Si es absolutamente necesario, probablemente simplemente recrearé el proyecto desde cero y espero no copiar/pegar el mismo problema (o uno nuevo) en el nuevo proyecto, pero espero que alguien pueda venir. Piensa en algo más fácil de probar primero.

ACTUALIZAR

Aquí está el comienzo de Views/Shared/_Layout.cshtml:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - Experiment 626</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>

Aquí está App_Start\BundleConfig.cs:

using System.Web;
using System.Web.Optimization;

namespace Experiment626
{
    public class BundleConfig
    {
        // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.validate.min.js",
                        "~/Scripts/jquery.validate.unobtrusive.min.js"));

            // Use the development version of Modernizr to develop with and learn from. Then, when you're
            // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                      "~/Scripts/bootstrap.js",
                      "~/Scripts/respond.js"));

            bundles.Add(new StyleBundle("~/Content/css").Include(
                      "~/Content/bootstrap-theme.css",
                      "~/Content/site.css"));
        }
    }
}

ACTUALIZAR

Mirando en Firebug, para cada archivo CSS o JavaScript, los encabezados de solicitud y respuesta se ven así:

Encabezado de solicitud

GET /Content/site.css HTTP/1.1
Host: localhost:6365
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/css,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://localhost:6365/
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

Encabezado de respuesta

HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcV2FsbHkuSGFydHNob3JuXFZpc3VhbCBTdHVkaW8gMjAxM1xQcm9qZWN0c1xFeHBlcmltZW50NjI2XEV4cGVyaW1lbnQ2MjZcQ29udGVudFxzaXRlLmNzcw==?=
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Tue, 25 Feb 2014 21:13:50 GMT
Content-Length: 5870

ACTUALIZAR

A modo de comparación, aquí está el encabezado de solicitud cuando se usa Chrome:

Accept:text/css,*/*;q=0.1
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:localhost:6365
Pragma:no-cache
Referer:http://localhost:6365/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36

ACTUALIZAR

En la página de error predeterminada que muestra IIS, hay una sección de Información detallada del error que contiene lo siguiente:

Module          IIS Web Core
Notification    AuthenticateRequest
Handler         StaticFile
Error Code      0x80070542
Requested URL   http://localhost:6365/Content/site.css
Physical Path   C:\Users\Wally.Hartshorn\Visual Studio 2013\Projects\Experiment626\Experiment626\Content\site.css
Logon Method   NTLM
Logon User     SOMEDOMAIN\Wally.Hartshorn
Request Tracing Directory   \\something.domain.com\SPIUsers1\Wally.Hartshorn\IISExpress\TraceLogFiles\EXPERIMENT626

Todavía no he podido descubrir cómo ver la excepción real que se genera para activar el código de estado 500.

ACTUALIZAR

Al investigar ese código de error, descubrí que aparentemente significa "O no se proporcionó un nivel de suplantación requerido o el nivel de suplantación proporcionado no es válido". Supongo que hay algo en la forma en que Firefox maneja la autenticación que es diferente a la forma en que Internet Explorer y Google Chrome, pero aún no tengo idea de cómo solucionarlo.

ACTUALIZAR

Como experimento, creé un nuevo proyecto ASP.NET MVC en Visual Studio 2013, seleccionando Autenticación de Windows.Luego, sin hacer CUALQUIER cambios en esta nueva solución, presioné Ctrl-F5 para compilarla y abrir la página de inicio predeterminada en Firefox.Recibo exactamente el mismo error en el proyecto intacto: Error del servidor HTTP 500.0, con un código de error de 0x80070542, que indica "No se proporcionó un nivel de suplantación requerido o el nivel de suplantación proporcionado no es válido".

Entonces, aparentemente no tiene nada que ver con mi código, sino que es un problema básico con la forma en que están configurados Visual Studio 2013, IIS Express y/o Windows 7.

Estoy perplejo.

¿Fue útil?

Solución

G_P me indicó la solución a mi problema.Aparentemente, la causa principal es que Firefox no funciona de forma predeterminada con la autenticación integrada de Windows, a menos que el sitio sea confiable.

Para habilitar la autenticación integrada de Windows en Firefox:

  1. Ingresar about:config en la barra de direcciones.
  2. Reconozca el aterrador mensaje de advertencia.
  3. En la barra de búsqueda, ingresa network.automatic.
  4. Haga doble clic en network.automatic-ntlm-auth.trusted-uris.
  5. Introduzca la URL del servidor, p.e. localhost o mycompany.com.

Después de eso, funciona bien.

Desafortunadamente, esto significaría instruir a todos los miembros de la empresa que quisieran acceder a la aplicación usando Firefox que tendrían que realizar este cambio (de lo contrario, el departamento de TI tendría que encontrar una manera de hacerlo).En esta aplicación en particular, eso no es gran cosa, porque la cantidad de usuarios será bastante pequeña.Para una aplicación posterior, probablemente tendré que pensar en algo más.(¿Quizás debería investigar Windows Identity Foundation?Aunque suena un poco aterrador).

En cualquier caso, voy a decir que esto es "suficientemente bueno por ahora" y seguiré con mi vida.Gracias mucho a todos los que me ayudaron!

PDDos páginas con información potencialmente útil:

Otros consejos

Tiene una cookie creada en el navegador anterior que estaba probando y que no existe en Firefox.Realmente dudo que el problema tenga algo que ver con Firefox.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top