Aggiornamento 2rappresentazione e asincronia in ASP.NET WebAPI
Questa domanda era in origine "fa il lavoro di rappresentazione con API Web?"
E la domanda a questa domanda è "Sì, lo fa".
Ma il problema non riguardava l'API Web ma la rappresentazione stessa. (La descrizione del problema è al di sotto)
Ma ora vorrei dire agli altri circa la soluzione.
I miei controller sono asincroni e la mia premessa errata era che qualsiasi thread generato da thread rappresentato ha la stessa identità del suo genitore.
Per impostazione predefinita è falso: TPL non scorre la rappresentazione attraverso i thread.
flusso di rappresentazione può essere abilitato programmatically or in configuration.
Nota, per favore, che le modifiche dovrebbero essere apportate al aspnet.config di file e non web.config dell'applicazione.
As this post indica che il file aspnet.config può essere impostato per pool di applicazioni.
E this post il link a cui ha gentilmente fornito Andrew racconta l'intera ricerca in maggiori dettagli.
Per quelli di voi che gireranno la rappresentazione per la prima volta mi piacerebbe notare che IIS 7.5 ha una funzionalità molto bella per inserire le credenziali dell'account rappresentato. Queste credenziali non sono necessarie nel file di configurazione e sono sufficienti per scrivere solo.
<identity impersonate="true"/>
Dopo aver immesso le credenziali, queste verranno automaticamente aggiunte al file di configurazione.
domanda originale:
ho girato la rappresentazione su e ha fornito le credenziali dell'utente.
<identity impersonate="true" usernName="foo" password="bar"/>
Ma quando mi collego al server SQL tramite Entity Framework ottengo l'errore "Accesso non riuscito per l'utente {MachineName} $". Questo è EF funziona con account IUSR. Nel frattempo, WindowsIdentity.GetCurrent()
restituisce l'identità dell'utente "foo".
account rappresentato dispone di tutte le autorizzazioni necessarie su un server SQL in cui Windows authentiaction è abilitato.
Inoltre, se si disabilita la rappresentazione e si imposta semplicemente il pool di applicazioni per l'esecuzione con le credenziali di questa identità, tutto funziona correttamente.
non riesco a capire il motivo per cui non funziona quando la rappresentazione è acceso, ma AppPool viene eseguito con account predefinito.
Aggiornamento stringa di connessione 1
EF è
<add name="PtKbEntities" connectionString="metadata=...;provider=System.Data.SqlClient;provider connection string="data source=...;initial catalog=...;Trusted_Connection=Yes;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
ospito applicazione su Win2008 SRV, IIS 7,5
come fa il vostro connectionstring sql assomiglia? –
@AndrewFlierman L'ho aggiunto alla domanda –