Как изменить веб-ссылку на веб-сайте разработки .NET?

Наша веб-ссылка, похоже, не определена в web.config веб-сайта, который ее использует. Я обнаружил, что в папке "Web References" есть файл конфигурации, называемый "Reference.map", который выглядит редактируемым, но когда я их редактирую, ничего не происходит. Я даже переименовал файл WSDL в папку, чтобы узнать, получит ли он новый. Это не так.

Нужно ли мне делать сборку только для изменения URL-адреса указанной веб-службы?

Ответ 1

Вы можете пометить веб-ссылку как статический или динамический URL. Если вы выберете динамический, то он добавит URL-адрес в web.config, который затем вы сможете изменить в рабочей среде.

Если он помечен как статический, он скомпилируется в двоичный файл и не может быть изменен без восстановления.

Если он уже динамический, тогда код ищет динамический URL-адрес, а затем, если он не может его найти, он использует оригинал по умолчанию. Поэтому вы можете просто добавить запись в веб-конфигурацию, например:

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

Ответ 2

В Compact Framework вам необходимо прочитать конфигурационный файл в своем собственном классе WebService:

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";
        }
    }