2010-02-25 6 views
11

Nuestra referencia web no parece estar definida en web.config del sitio web que la consume. Descubrí que hay un archivo de configuración llamado "Reference.map" en la carpeta "Web References" que parece editable, pero cuando los edito no sucede nada. Incluso cambié el nombre del archivo WSDL en la carpeta para ver si obtenía uno nuevo. No lo hizo.¿Cómo cambio una referencia web en un sitio web de producción de .NET?

¿Tengo que hacer una compilación solo para cambiar la URL de un servicio web al que se hace referencia?

Respuesta

19

Puede marcar una referencia web como URL estática o dinámica. Si eliges dinámico, entonces agregará la URL al web.config, que luego podrás cambiar en tu entorno de producción.

Si está marcado como estático, se compila en el binario y no se puede modificar sin una reconstrucción.

Si ya es dinámico, el código busca la URL dinámica y luego, si no puede encontrarla, utiliza el original predeterminado. Por lo tanto, sólo puede añadir una entrada en la configuración de red como:

<applicationSettings> 
    <MySystem.Properties.Settings> 
     <setting name="MySystem_MyService" serializeAs="String"> 
      <value>http://mysystem/service.asmx</value> 
     </setting> 
    </MySystem.Properties.Settings> 
</applicationSettings> 
+0

Me di cuenta después marcando esto como la respuesta de que la URL está marcada como dinámica, pero aún no está en la configuración web. ¿Alguna otra idea? – JoshBaltzell

+0

Han agregado algo más de información, básicamente, solo agregue las líneas en el archivo web.config. La sintaxis exacta depende de su referencia web. –

+0

Para agregar a eso, simplemente eliminar y volver a agregar la referencia web probablemente reconstruya su web.config por usted. Asegúrate de que no sea de solo lectura ni nada. –

0

En Compact Framework usted tiene que leer el archivo de configuración en su propia clase de servicio Web:

public partial class YourService : System.Web.Services.Protocols.SoapHttpClientProtocol { 

    /// <remarks/> 
    public HandTerminalService() { 
     string appSettings = string.Concat(Assembly.GetExecutingAssembly().GetName().CodeBase, ".config"); 
     XmlDocument xmlDocument = new XmlDocument(); 
     xmlDocument.Load(appSettings); 
     XmlNode xmlNode = xmlDocument.SelectSingleNode("//configuration/appSettings/add[@key = 'Proxy.YourServiceService']"); 
     if (xmlNode.Attributes["value"].Value != null) 
     { 
      this.Url = string.Concat(xmlNode.Attributes["value"].Value, ""); 
     } else 
     { 
      this.Url = "http://<IP_or_DNS-Name>:<Port>/YourService.asmx"; 
     } 
    } 
Cuestiones relacionadas