Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os tipos System.Configuration e System.Web.Configuration permitem que seu aplicativo acesse os arquivos de configuração em um servidor remoto.Em particular, você pode abrir e modificar o Machine.config ou um arquivo Web.config em qualquer aplicativo Serviços de Informações da Internet (IIS) da Microsoft, ou suas pastas filho em um servidor remoto.Este tópico:
Demonstra como definir o servidor remoto para permitir que um computador cliente acesse os arquivos de configuração do servidor.
Fornece um aplicativo de console, para ser executado no computador cliente, que pode ler ou modificar os arquivos de configuração do servidor.
Descreve as considerações de segurança para levar em conta.
Para acessar arquivos de configuração em um servidor remoto, o computador cliente deve ser capaz de se comunicar com o servidor.Para ativar essa comunicação, um componente de configuração remoto deve ser instalado no servidor.
O computador cliente, em seguida, acessa os arquivos de configuração do servidor chamando o API da configuração ASP.NET por meio do componente de configuração remoto.Para obter mais informações, consulte Editando Arquivos de Configuração remotos do ASP.NET.
Observação: |
|---|
Se o arquivo de configuração solicitado não existir, o .NET Framework, em execução no servidor, retornara um arquivo de configuração consistindo inteiramente de configurações herdadas que se aplicam ao caminho especificado.Se seu aplicativo solicita uma atualização, um novo arquivo é criado.Ao executar o aplicativo de console, insira um nome de servidor válido.Isso ocorre porque o ASP.NET passa esse nome diretamente para o sistema operacional.Você deve digitar um nome de usuário totalmente qualificado com o prefixo nome de domínio da mesma forma. |
Para configurar o servidor remoto
Instale o componente remoto de configuração no servidor usando a ferramenta de registro do IIS do ASP.NET (Aspnet_regiis.exe) com o comando config+, conforme mostrado no código o seguir.
Aspnet_regiis config+Por meio de programação ou manualmente, certifique-se de que o arquivo web.config do "Site da Web Padrão" do servidor IIS contenha valores semelhantes aos seguinte:
<appSettings> <add key="keyName1", value = "this entry value"/> <add key="keyName2", value = "this entry value"/> <add key="keyName3", value = "this entry value"/> </appSettings>
Para atualizar os arquivos de configuração remoto usando um aplicativo de console
Execute o aplicativo de console fornecido no exemplo de código abaixo para atualizar o arquivo web.config do site da Web padrão no servidor remoto.Este exemplo assume que o usuário que está executando o aplicativo cliente tem privilégios administrativos sobre o servidor remoto.Você pode usar um desses dois comandos.
>remoteconfiguration machineName >remoteconfiguration machineName domainName\userName password
Exemplo
Imports System
Imports System.Configuration
Imports System.Web.Configuration
Imports System.Collections.Specialized
' This example dDemonstrates how to access and modify remote
' configuration files
Public Class RemoteConfiguration
' The application entry point.
Public Shared Sub Main(ByVal args() As String)
' This string contains the name of
' the remote server.
Dim machineName As String = String.Empty
' Get the user's input.
If args.Length > 0 Then
' Get the name of the remote server.
' The machine name must be in the format
' accepted by the operating system.
machineName = args(0)
' Get the user name and password.
If args.Length > 1 Then
Dim userName As String = args(1)
Dim password As String = String.Empty
If args.Length > 2 Then
password = args(2)
End If
' Update the site configuration.
UpdateConfiguration(machineName, userName, password)
Else
' Update the site configuration.
UpdateConfiguration(machineName)
End If
Else
Console.WriteLine("Enter a valid server name.")
End If
End Sub 'Main
' Update the configuration file using the credentials
' of the user running this application. Tthen,
' call the routine that reads the configuration
' settings.
' Note that the system issues an error if the user
' does not have administrative privileges on the server.
Public Overloads Shared Sub _
UpdateConfiguration(ByVal machineName As String)
Try
Console.WriteLine("MachineName: [{0}]", machineName)
Console.WriteLine("UserDomainName: [{0}]", _
Environment.UserDomainName)
Console.WriteLine("UserName: [{0}]", _
Environment.UserName)
' Get the configuration.
Dim config As Configuration = _
WebConfigurationManager.OpenWebConfiguration("/", _
"Default Web Site", Nothing, machineName)
' Add a new key/value pair to appSettings.
Dim count As String = _
config.AppSettings.Settings.Count.ToString()
config.AppSettings.Settings.Add("key_" + count, _
"value_" + count)
' Save changes to the file.
config.Save()
' Read the new appSettings.
ReadAppSettings(config)
Catch err As Exception
Console.WriteLine(err.ToString())
End Try
End Sub 'UpdateConfiguration
' Update the configuration file using the credentials
' of the passed user, then call the routine that reads
' the configuration settings.
' Note that the system issues an error if the user
' does not have administrative privileges on the server.
Public Overloads Shared Sub UpdateConfiguration(ByVal _
machineName As String, ByVal userName As String, ByVal _
password As String)
Try
Console.WriteLine("MachineName: [{0}]", machineName)
Console.WriteLine("UserName: [{0}]", userName)
Console.WriteLine("Password: [{0}]", password)
' Get the configuration.
Dim config As Configuration = _
WebConfigurationManager.OpenWebConfiguration("/", _
"Default Web Site", Nothing, machineName, _
userName, password)
' Add a new key/value pair to appSettings
Dim count As String = _
config.AppSettings.Settings.Count.ToString()
config.AppSettings.Settings.Add("key_" + _
count, "value_" + count)
' Save to the file,
config.Save()
' Read the new appSettings.
ReadAppSettings(config)
Catch err As Exception
Console.WriteLine(err.ToString())
End Try
End Sub 'UpdateConfiguration
' Read the appSettings on the remote server.
Public Shared Sub ReadAppSettings(ByVal config As Configuration)
Try
Console.WriteLine("--- Printing appSettings at [{0}] ---", _
config.FilePath)
Console.WriteLine("Count: [{0}]", _
config.AppSettings.Settings.Count)
Dim key As String
For Each key In config.AppSettings.Settings.AllKeys
Console.WriteLine(" [{0}] = [{1}]", _
key, config.AppSettings.Settings(key).Value)
Next key
Console.WriteLine()
Catch err As Exception
Console.WriteLine(err.ToString())
End Try
End Sub 'ReadAppSettings
End Class 'RemoteConfiguration
using System;
using System.Configuration;
using System.Web.Configuration;
using System.Collections.Specialized;
namespace Samples.AspNet
{
// This example dDemonstrates how to access and modify remote
// configuration files
public class RemoteConfiguration
{
// The application entry point.
public static void Main(string[] args)
{
// This string contains the name of
// the remote server.
string machineName = string.Empty;
// Get the user's input.
if (args.Length > 0)
{
// Get the name of the remote server.
// The machine name must be in the format
// accepted by the operating system.
machineName = args[0];
// Get the user name and password.
if (args.Length > 1)
{
string userName = args[1];
string password = string.Empty;
if (args.Length > 2)
password = args[2];
// Update the site configuration.
UpdateConfiguration(machineName, userName,
password);
}
else
{
// Update the site configuration.
UpdateConfiguration(machineName);
}
}
else
{
Console.WriteLine("Enter a valid server name.");
}
}
// Update the configuration file using the credentials
// of the user running this application then
// call the routine that reads the configuration
// settings.
// Note that the system issues an error if the user
// does not have administrative privileges on the server.
public static void UpdateConfiguration(string machineName)
{
try
{
Console.WriteLine("MachineName: [{0}]", machineName);
Console.WriteLine("UserDomainName: [{0}]",
Environment.UserDomainName);
Console.WriteLine("UserName: [{0}]",
Environment.UserName);
// Get the configuration.
Configuration config =
WebConfigurationManager.OpenWebConfiguration(
"/", "Default Web Site", null, machineName);
// Add a new key/value pair to appSettings.
string count =
config.AppSettings.Settings.Count.ToString();
config.AppSettings.Settings.Add("key_" + count, "value_" + count);
// Save to the file,
config.Save();
// Read the new appSettings.
ReadAppSettings(config);
}
catch (Exception err)
{
Console.WriteLine(err.ToString());
}
}
// Update the configuration file using the credentials
// of the passed user. Tthen,
// call the routine that reads the configuration settings.
// Note that the system issues an error if the user
// does not have administrative privileges on the server.
public static void UpdateConfiguration(string machineName,
string userName, string password)
{
try
{
Console.WriteLine("MachineName: [{0}]", machineName);
Console.WriteLine("UserName: [{0}]", userName);
Console.WriteLine("Password: [{0}]", password);
// Get the configuration.
Configuration config =
WebConfigurationManager.OpenWebConfiguration(
"/", "Default Web Site", null,
machineName, userName, password);
// Add a new key/value pair to appSettings
string count =
config.AppSettings.Settings.Count.ToString();
config.AppSettings.Settings.Add("key_" + count, "value_" + count);
// Save changes to the file.
config.Save();
// Read the new appSettings.
ReadAppSettings(config);
}
catch (Exception err)
{
Console.WriteLine(err.ToString());
}
}
// Read the appSettings on the remote server.
public static void ReadAppSettings(
Configuration config)
{
try
{
Console.WriteLine("--- Printing appSettings at [{0}] ---",
config.FilePath);
Console.WriteLine("Count: [{0}]",
config.AppSettings.Settings.Count);
foreach (string key in config.AppSettings.Settings.AllKeys)
{
Console.WriteLine(" [{0}] = [{1}]",
key, config.AppSettings.Settings[key].Value);
}
Console.WriteLine();
}
catch (Exception err)
{
Console.WriteLine(err.ToString());
}
}
}
}
O exemplo de código anterior lê e modifica os valores do elemento AppSettings configurado para o site da Web padrão do servidor.Em seguida, os valores são exibidos no console.
O código usa os seguintes métodos:
OpenWebConfiguration, para abrir o arquivo de configuração do aplicativo da Web como um objeto Configuration.Observe que o usuário implícito deve ter privilégios administrativos sobre o servidor remoto.
OpenWebConfiguration, para abrir o arquivo de configuração do aplicativo da Web como um objeto Configuration.Observe que o usuário especificado na lista de parâmetros deve ter privilégios administrativos sobre o servidor remoto.
AppSettings, para acessar a seção de sites relacionados padrão.
GetSection, para acessar a seção de identidade de sites padrão.
Compilando o código
Para compilar o aplicativo de console, você deve use o comando a seguir.
vbc /out:RemoteConfiguration.exe /t:exe RemoteConfiguration.vb
/r:System.Web.dll /r:System.Configuration.dll
csc /out: RemoteConfiguration.exe /t:exe RemoteConfiguration.cs
/r:System.Web.dll /r:System.Configuration.dll
Segurança
Para acessar um arquivo de configuração em um servidor remoto, seu aplicativo deve ter privilégios administrativos naquele servidor remoto.
Observação: |
|---|
Esse é um requisito mais estrito do que aquele necessário para acessar os arquivos de configuração local.Para acessar arquivos locais, o aplicativo precisa apenas de privilégios de leitura/gravação e acesso de leitura para a meta base do IIS para resolver o caminho. |
Consulte também
Conceitos
Editando Arquivos de Configuração remotos do ASP.NET
Usando as Classes de Configuração
Visão Geral da Configuração ASP.NET
Referência
Ferramenta de registro ASP.NET IIS (Aspnet_regiis.exe)
Observação: