У меня проблема при подключении к Oracle БД в следующем сценарии:
Строка подключения:
<add name="PassContext" connectionString="metadata=res://*/Entities.PassModel.csdl|res://*/Entities.PassModel.ssdl|res://*/Entities.PassModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=DB-SCAN:1521/PR;USER ID=/;Pooling=true;CONNECTION LIFETIME=20;INCR POOL SIZE=1;MAX POOL SIZE=1;"" providerName="System.Data.EntityClient" />
В среде разработки все работает нормально.
Когда я публикую sh в IIS, вот что произошло:
Мы использовали Anonymous и Windows Auth
<authentication mode="Windows" />
<identity impersonate="true" />
<authorization>
<allow users="*" />
</authorization>
У меня есть уровень множественного доступа на том же сайте:
Pages / * Windows Auth
Public / * anonymouse auth
в папке publi c, которую я использовал другой dbcontext со строкой соединения с именем пользователя и паролем:
<add name="PublicPassContext" connectionString="metadata=res://*/Entities.PassModel.csdl|res://*/Entities.PassModel.ssdl|res://*/Entities.PassModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=DB-SCAN:1521/PR;USER ID=userName;Password=password;Pooling=true;CONNECTION LIFETIME=20;INCR POOL SIZE=1;MAX POOL SIZE=1;"" providerName="System.Data.EntityClient" />
, когда я публикую sh в IIS, если первый запрос идет к: Public / * path, а затем я go к любой странице в: Pages / * path
Я получил ошибку:
ORA-01017: неверное имя пользователя / пароль; вход в систему запрещен
, если первый запрос идет на Pages / * все работает нормально.
и несколько раз за ночь, когда все работает нормально, тогда утром пользователи получают ту же ошибку
Я пробовал как управляемый, так и классический c конвейер, и подражал в коде
var callerWindowsIdentity = Request.LogonUserIdentity as WindowsIdentity;
using (callerWindowsIdentity.Impersonate())
{
//context code
}
, но они не работают