Domanda

(Sono nuovo in .Net e nel mondo Microsoft in generale, provengo da Java e Tomcat, quindi tienilo a mente.)

Sto lavorando alla mia prima applicazione .Net, utilizzando Visual Studio 2013, C#, .Net 4.5, MVC 5 ed EF 6.Si tratta di un'applicazione basata sul Web abbastanza semplice, che utilizza l'autenticazione di Windows e i gruppi di Active Directory per l'autorizzazione a eseguire operazioni CRUD abbastanza semplici su una tabella in un database SQL Server.

Non ho ancora distribuito l'applicazione.Lo sto ancora sviluppando e testando sul mio PC (con Windows 7).Quando premo Ctrl-F5 per testare l'applicazione in Internet Explorer o Google Chrome, tutto funziona correttamente.

Tuttavia, se dico invece a Visual Studio di accedervi in ​​Firefox, viene visualizzata la pagina SENZA qualsiasi CSS o JavaScript.Posso fare clic sui collegamenti all'interno dell'applicazione e navigare tra le varie pagine, che funzionano tutte correttamente.Vengono semplicemente visualizzati senza CSS o JavaScript funzionante.Quando provo manualmente a visualizzare uno dei file CSS o JavaScript, ricevo un errore interno del server (errore HTTP 500).Il controllo del file di registro mostra un codice di stato 500 per ciascuno dei file CSS e JavaScript che la pagina stava tentando di caricare.

Sono sconcertato, perché funziona bene da Internet Explorer e da Chrome.In che modo l'utilizzo di un browser Web diverso può causare questo errore interno del server?

Vorrei pubblicare parte del codice, ma a questo punto non ho idea di cosa sarebbe utile vedere.(Potrei mostrare che tipo di informazioni aggiuntive IIS Express sta registrando, se presenti, ma non sono sicuro di dove trovarle, a parte la riga che mostra il codice di stato 500.)

Ad un certo punto, abbastanza presto nello sviluppo, mi sono reso conto che avevo chiamato "versione" un campo del database quando volevo che fosse chiamato "Versione" (in maiuscolo).Ho eseguito una ricerca/sostituzione globale nell'intera soluzione su quella stringa, anziché rinominare il campo.È possibile che qualcosa di importante sia stato interrotto da questo processo, ma ho effettuato una ricerca globale su "Versione" (e su "versione") e non ho trovato nulla di degno di nota.

Se proprio devo, probabilmente ricreerò semplicemente il progetto da zero e spero di non copiare/incollare lo stesso problema (o uno nuovo) nel nuovo progetto, ma spero che qualcuno possa venire inventare qualcosa di più semplice da provare prima.

AGGIORNAMENTO

Ecco l'inizio di 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>

Ecco 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"));
        }
    }
}

AGGIORNAMENTO

Guardando in Firebug, per ogni file CSS o JavaScript, le intestazioni di richiesta e risposta appaiono così:

Richiedi intestazione

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

Intestazione della risposta

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

AGGIORNAMENTO

Per confronto, ecco l'intestazione della richiesta quando si utilizza 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

AGGIORNAMENTO

Nella pagina di errore predefinita visualizzata da IIS, è presente una sezione Informazioni dettagliate sull'errore, che contiene quanto segue:

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

Non sono ancora riuscito a capire come visualizzare l'eccezione effettiva generata per attivare il codice di stato 500.

AGGIORNAMENTO

Ricercando quel codice di errore, ho scoperto che apparentemente significa "Non è stato fornito il livello di rappresentazione richiesto oppure il livello di rappresentazione fornito non è valido." Immagino che ci sia qualcosa nel modo in cui Firefox gestisce l'autenticazione che è diverso dal modo in cui Internet Explorer e Google Chrome, ma non ho ancora idea di come risolverlo.

AGGIORNAMENTO

A titolo sperimentale, ho creato un nuovissimo progetto ASP.NET MVC in Visual Studio 2013, selezionando Autenticazione di Windows.Poi, senza fare QUALUNQUE modifiche a questa nuovissima soluzione, premo Ctrl-F5 per crearla e aprire la home page predefinita in Firefox.Ottengo esattamente lo stesso errore nel progetto intatto: Errore server HTTP 500.0, con un codice di errore di 0x80070542, indicando "Non è stato fornito il livello di rappresentazione richiesto oppure il livello di rappresentazione fornito non è valido".

Quindi apparentemente non ha nulla a che fare con il mio codice, ma si tratta invece di un problema di base con la configurazione di Visual Studio 2013, IIS Express e/o Windows 7.

Sono perplesso.

È stato utile?

Soluzione

G_P mi ha indicato la soluzione al mio problema.Apparentemente la causa principale è che Firefox non funziona per impostazione predefinita con l'autenticazione integrata di Windows, a meno che il sito non sia attendibile.

Per abilitare l'autenticazione integrata di Windows in Firefox:

  1. accedere about:config nella barra degli indirizzi.
  2. Riconosci il messaggio di avviso spaventoso.
  3. Nella barra di ricerca, inserisci network.automatic.
  4. Fare doppio clic su network.automatic-ntlm-auth.trusted-uris.
  5. Inserisci l'URL del server, ad es. localhost O mycompany.com.

Dopodiché funziona bene.

Sfortunatamente, ciò significherebbe istruire tutti i membri dell'azienda che desiderano accedere all'applicazione utilizzando Firefox che dovranno apportare questa modifica (altrimenti il ​​reparto IT dovrebbe trovare un modo per farlo).In questa particolare applicazione, non è un grosso problema, perché il numero di utenti sarà piuttosto ridotto.Per un'applicazione successiva, probabilmente dovrò escogitare qualcos'altro.(Forse dovrei esaminare Windows Identity Foundation?Sembra un po' spaventoso, però.)

In ogni caso, lo chiamerò "abbastanza buono per ora" e andrò avanti con la mia vita.Grazie molto a tutti quelli che mi hanno aiutato!

PSDue pagine con informazioni potenzialmente utili:

Altri suggerimenti

Hai un cookie creato sul browser precedente che stavi testando che non esce su Firefox.Dubito davvero che il problema abbia qualcosa a che fare con Firefox.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top