Domanda

Come posso ottenere due siti ASP.NET separati, in questo caso un sito Web utilizzando Entity Framework e Servizio Web, per utilizzare lo stesso database locale MDF e LDF?

Mi sono guardato intorno e penso che questo tipo di DB locale sia chiamato istanza dell'utente - almeno il loro modo in cui lo sto usando. Non ero sicuro che funzionasse o no fino a quando non ho trovato le informazioni seguenti da Biblioteca MSDN E ora non sono davvero sicuro che funzionerà.

Gli scenari di istanza utente includono:

...

Hosting ASP.NET dedicato utilizzando l'autenticazione Windows. Una singola istanza SQL Server Express può essere ospitata su una intranet. L'applicazione si collega utilizzando l'account Windows ASPNET, non utilizzando l'impersonizzazione. Le istanze dell'utente non dovrebbero essere utilizzate per scenari di hosting di terze parti o condivisi in cui tutte le applicazioni condividerebbero la stessa istanza dell'utente e non rimarrebbero più isolate l'una dall'altra.

Funzionerà subito senza alcuna configurazione extra? Quando provo ad aggiungere un DB a ogni applicazione successiva, ottengo un file in uso se qualcos'altro sta usando il DB che mi porta a credere che non posso farlo in questo modo. Tuttavia, se impegno a utilizzare il DB, quindi aggiungilo e poi avrò, esso sembra per funzionare bene. Qualcuno ha qualche rassicurazione per me che non sarà corrotto o non sperimenta errori usandolo in questo modo?

Preferibilmente, MDF e LDF sarebbero archiviati nella directory App_Data del sito Web (| DataDirectory |). Se lo faccio in questo modo, non credo di poter usare in modo affidabile l'indirizzo relativo per il servizio a meno che non lo inserisca in una sotto -directory per il sito, è corretto?

modificare: Sto usando SQL Server Express perché questo è un incarico per la scuola, quindi devo praticamente usarlo. Se c'è un modo senza istanza dell'utente, proverò a fare a meno.

È stato utile?

Soluzione

Non puoi usare User Instance per questo. Ciò consente un solo client alla volta per connettersi al database. Quando le tue due applicazioni utilizzano le stesse credenziali, si ottiene l'errore che descrivi. Quando le tue due applicazioni utilizzano credenziali diverse, si ottiene essenzialmente due istanze separate (anche non ciò che desideri).

Inoltre, le istanze dell'utente sono supportate solo su SQL Server Express. Non so come sia il tuo ambiente di produzione, ma probabilmente non funziona su SQL Server Express?

Dovresti usare AttachDBFilename Nella stringa di connessione dell'applicazione Web per indicare il database locale: AttachDBFilename=|DataDirectory|\MyDB.mdf.

Nel tuo servizio Web che usi anche AttachDBFilename Ma dipende dalla posizione di distribuzione del servizio Web dove indicarlo.

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