Buonasera, sto cercando di sviluppare un sito web con mvc5, sono alle prime armi, sto combattendo con la realizzazione di una tabella dove poter salvare i miei dati, quindi ho creato il modello, il controller, la view, in debug tutto ok, mi crea anche il db.mdf nella cartella dbdata e funziona.

Ho montato il mio progetto su IIS per poter sviluppare senza andare in debug (premetto che sono abituato ad utilizzare IIS, ma e' la prima volta che provo con MVC5) e qui iniziano i primi problemi:

- appena provo ad aprire la pagina di gestione mi da questo errore :
Si e' verificato un errore di rete o specifico dell'istanza mentre si cercava di stabilire una connessione con SQL Server. Il server non e' stato trovato o non e' 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.
)

Sapreste dirmi se c'e' un modo per lavorare senza debug?

Inoltre mi prende il dubbio, il progetto e' un sito web che dovrebbe andare su Hosting Aruba classico, quali problemi potrei incontrare?

Potrebbe convenire cambiare approccio e utilizzare db.sdf e ricrearsi i modelli con Entity Data Model?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
quando mandi in esecuzione un'applicazione web in IIS, essa gira con un particolare utente virtuale, anziché con il tuo utente come quando la mandavi in debug in IIS Express da Visual Studio.

Questo utente virtuale non possiede i privilegi per attaccare il tuo database .mdf all'istanza di LocalDb, ed ecco che hai l'errore.

Ne abbiamo parlato brevemente in questa discussione.
http://forum.aspitalia.com/forum/post/402382/Usare-Localdb-Sql-Express-Vs2013.aspx

Sebbene esistano soluzioni, ti conviene forse scaricare ed installare SqlExpress, che è una versione più simile concettualmente più simile a quella che troverai su Aruba (il database è già collegato all'istanza; l'istanza è sempre attiva perché disponibile come servizio anziché attivata on-demand).

Da Sql Server Management Studio, imposta l'autenticazione SQL per l'istanza di Sql Express e poi creati un utente e conferiscigli l'accesso (o la proprietà) al database. Usa le sue credenziali nella connection string dell'applicazione. A questo punto, dato che non usi più l'autenticazione di Windows ma quella SQL, sarà irrilevante l'utente con cui la tua applicazione sta andando in esecuzione.

Quando è il momento di andare in produzione, ti basterà sostituire le credenziali con quelle fornite da Aruba al momento dell'acquisto del database Sql Server.

saltello84 ha scritto:

Inoltre mi prende il dubbio, il progetto e' un sito web che dovrebbe andare su Hosting Aruba classico, quali problemi potrei incontrare?

Non so, magari altri utenti potranno commentare. Nel frattempo chiedi all'assistenza tecnica di Aruba.

ciao,
Moreno

Enjoy learning and just keep making
Grazie mille per la risposta.

Non avevo visto la discussione, ma conoscendo le differenze degli utenti tra debug e IIS immaginavo che il problema erano i privilegi, ma non avevo pensato ad utilizzare SQL Express; ho provato a configurare i privilegi di localDb ma come hai detto nell'atra discussione ho trovato la cosa molto "ostica"....

Il mio problema e' che spesso i miei clienti sono appoggiati a dei provider (che non sono Aruba) un po' piu' piccoli e sui quali è sempre un problema configurare gli accessi ai db, il piu' delle volte devo trovare io il modo di configurargli il server per far girare l'applicativo, quindi nel tempo ho optato all'utilizzo di SqlCompactCE che per quello che mi serve va benissimo (inoltre da quello che ho capito si include il "motore" all'interno del progetto e mi risolvo un sacco di configurazioni....) con cui e' anche piu' facile gestire eventuali backup (file fisico, copia incolla in qualsiasi momento....)

Fino ad ora ho utilizzato il CE con Entity Data Model ed andavo benissimo, adesso passando ad MVC volevo scrivere delle librerie riutilizzabili nel tempo per i vari progetti anche da condividere con i miei collaboratori, e .sdf mi sembrava il formato piu' opportuno e piu' veloce.

A forza di spippolare sono riuscito a configurare l'SqlCompactCe come db di utilizzo e adesso gira bene sia in Debug che su IIS (devo ancora mettere appunto gli insert e gli update ma ho risolto proprio adesso l'accesso al db e non ci ho ancora guardato, ma almeno la lettura funziona :-) )

Alla fine sono pochi passaggi (una volta scoperto l'arcano tra le infinite guide online) e si puo' utilizzare sia il procedimento di creazione db e realizzazione modelli con Entity data Model (da db) o quello che sto facendo adesso realizzando modelli lato codice e poi far creare il db a Visual Studio in AppData

Scrivo di seguito i miei passi, non ho ancora testato bene, quindi se vedi dei punti critici mi farebbe piacere se ne potessimo discutere:

1- Prima di tutto ho installato il "motore" del CE, tutti i pacchetti NuGet:
- Install-Package Microsoft.AspNet.Providers
- Install-Package SqlServerCompact
- Install-Package System.Web.Providers
- Install-Package EntityFramework -Version 6.1.3
- Install-Package EntityFramework.SqlServerCompact

2- Modifiche al WebConfig:

<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet.sdf" providerName="System.Data.SqlServerCe.4.0" />
<add name="DataConnection" connectionString="Data Source=|DataDirectory|dbData.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

...

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" >
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>

</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>


3- Installazione SQL Server Compact / SQLite Toolbox per gestire il db da visual studio


Mi sembra tutto, adesso devo verificare "Insert" ed "Update", ma in lettura sembra funzionare tutto correttamente, mi sapresti dire se ci sono delle criticita'?

Grazie mille ancora
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,

saltello84 ha scritto:

mi sapresti dire se ci sono delle criticita'?

Se la tua applicazione viene installata in intranet locali e viene usata da un numero contenuto di utenti, allora probabilmente SQL CE è una scelta adatta per i motivi che hai indicato.

Leggi questo articolo che ti mostra le differenze tra le due tecnologie (paragrafo "Feature comparison").
http://blogs.msdn.com/b/jerrynixon/archive/2012/02/26/sql-express-v-localdb-v-sql-compact-edition.aspx
Se non ti saltano all'occhio mancanze essenziali al tuo scenario, allora continua pure con SQL CE.

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.