41 messaggi dal 09 gennaio 2012
Ciao a tutti
sto studiano MVC e finche' sono dentro a VS2013 e lancio il debug posso vedere l'applicazione in azione ma se cerco di lanciare il sito fuori da VS2013 ottengo l'errore 404 o 403.14.
Ho Win7 Prof. e IIS 7.5 che per siti in classic asp funziona perfettamente.
Ho creato un nuovo sito in locale, puntato alla cartella dell'appl. MVC e assegnatogli una porta (402).
Ho un controller Prodotto che all'action Index nel debug mi mostra l'elenco dei prodotti.
Se provo a lanciare dal browser il sito con
http://localhost:402/Prodotto/
non trova nulla ma se punto a un file grafico lo visualizza, segno che IIS non ha problemi con quella porta e il sito "girerebbe".

cosa sbaglio ?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,

alvaropetro ha scritto:

segno che IIS non ha problemi con quella porta e il sito "girerebbe".

Sì, penso che il sito stia funzionando normalmente. Il problema, forse, è che IIS non sa di dover passare le richieste come /Prodotto ad ASP.NET.

Dalla console di IIS, ti sarà capitato di vedere l'icona "Mapping gestori". Dentro ci trovi un elenco di nomi, ciascuno assegnato ad un'estensione, che IIS usa per capire a chi deve far elaborare ogni richiesta in ingresso.

Ad esempio, per l'estensione .aspx, trovi un "PageHandlerFactory" a cui IIS passerà il controllo quando arriva una richiesta ad una pagina.aspx.

Nel tuo caso, però, le richieste non hanno estensione (es. /Prodotto) e, dato che ottieni un errore 404, penso che IIS non sappia che anche quella è una richiesta che va passata al runtime di ASP.NET.
Entra in "Mapping gestori" e cerca il cosiddetto "ExtensionlessUrlHandler". Se manca, ecco scoperto il problema. Aggiungilo nel tuo web.config, dal nodo system.webServer/handlers.
  <system.webServer>
    <handlers>
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>


ciao,
Moreno
Modificato da BrightSoul il 06 gennaio 2015 12.41 -

Enjoy learning and just keep making
41 messaggi dal 09 gennaio 2012
Ciao moreno
si, in IIS c'e'
ExtensionlessUrlHandler-Integrated-4.0
ExtensionlessUrlHandler-Integrated-4.0_32bit
ExtensionlessUrlHandler-Integrated-4.0_64bit

ho aggiunto le righe nella sezione ma mi da' sempre l'erore 404.
il web.config e ora e' cosi:

<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>

<handlers>
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>


... mi sono scordato qualcosa ?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,

alvaropetro ha scritto:

si, in IIS c'e'
ExtensionlessUrlHandler-Integrated-4.0
ExtensionlessUrlHandler-Integrated-4.0_32bit
ExtensionlessUrlHandler-Integrated-4.0_64bit

Ok, benissimo, se c'erano già allora non c'è bisogno di aggiungerli dal web.config.
Controlla che l'application pool su cui gira il tuo sito stia usando il runtime del framework 4.0. Lo imposti dalla console di IIS: click su "Pool di applicazioni", poi doppioclick sul pool. Imposta "Versione .NET CLR 4.0" come vedi fare qui:
http://support.thycotic.com/kb/a410/changing-the-application-pool-to-_net-4_0.aspx

Inoltre, come hai "pubblicato" l'applicazione nel sito sul tuo IIS? Hai usato la funzionalità "Publish" di Visual Studio per pubblicare il progetto in una cartella locale?

ciao,
Moreno

Enjoy learning and just keep making
41 messaggi dal 09 gennaio 2012
ok, corretto il fatto che usasse il Framw.2 e non il 4. Ora mi dice che non riesce a connettersi con SQL server.

"System.Data.SqlClient.SqlException: Si è verificato un errore di rete o specifico dell'istanza mentre si cercava di stabilire una connessione con SQL Server. Il server non è stato trovato o non è accessibile. Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato in modo da consentire connessioni remote. (provider: SQL Network Interfaces, error: 50 - Errore di Local Database Runtime. Impossibile creare un'istanza automatica. Per i dettagli sull'errore, vedere il registro eventi applicazioni di Windows.)"


Per la domanda su come ho pubblicato l'applicazione: ho copiato per intero la cartella del progetto nella cartella in cui ci sono i siti.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
in questo momento l'application pool sta andando in esecuzione con un utente virtuale di IIS. Può darsi che questo utente non abbia il privilegio per collegarsi a Sql Server o per creare una sua user instance.

Prova a cambiare l'utente legato all'application pool impostando il tuo utente di Windows.
http://www.iis.net/learn/manage/configuring-security/application-pool-identities

IIS Express per esempio gira per default col tuo utente. Se l'applicazione funzionava quel webserver, allora dovrà funzionare anche con IIS.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.