Come @yonsk già detto il motivo per cui si verifica questo problema (duplicate ingresso di), è possibile creare un'applicazione console che può correggere il file machine.config e poi, richiamare che l'applicazione di console dal programma di installazione dell'applicazione o dall'applicazione ogni volta che si ottiene l'eccezione. Il seguente codice può essere utilizzato per l'applicazione console che correggerà il file machine.config.
class Program
{
static void Main()
{
string machineConfigFilePath = RuntimeEnvironment.SystemConfigurationFile;
XDocument xdoc = XDocument.Load(machineConfigFilePath);
XElement[] elements = xdoc.XPathSelectElements("//configuration/system.data/DbProviderFactories").ToArray();
if (elements.Any())
{
foreach (XElement anElement in elements)
{
if (!anElement.HasElements)
anElement.Remove();
}
}
xdoc.Save(machineConfigFilePath);
}
}
Se si desidera chiamare l'applicazione console, dall'applicazione, è necessario richiamarlo come amministratore. Così, il seguente frammento può aiutare a invocare tale applicazione console come amministratore (l'utente verrà richiesto con una finestra di dialogo per accettare ..)
try
{
Process process = Process.Start(new ProcessStartInfo
{
Verb = "runas",
FileName = "/Path/to/the/console/application",
UseShellExecute = true,
CreateNoWindow = true,
});
process.WaitForExit();
int exitCode = process.ExitCode;
}
catch (Exception ex)
{
}
fonte
2014-04-01 22:05:11
Il motivo è che il nostro team di server vuole che dimostri che questo è il problema m prima che siano disposti a modificare la configurazione della macchina. Quindi devo risolvere il problema senza modificare la configurazione in modo che possano risolvere la configurazione della macchina ... sì, questo problema – Chad
Puoi pubblicare i bit del file di configurazione attorno a dove definisce la sezione DbProviderFactories? Questa pagina dice che è possibile eliminare il secondo tag DbProviderFactories e risolve il problema. È questo il problema che hai ?: http://forums.asp.net/t/1693277.aspx/1 –
@EricLeschinski - No, non posso non avere accesso alla configurazione. Sono consapevole di quella correzione ... è ciò che sto cercando di dimostrare è necessario lavorando intorno ad esso. – Chad