配置文件
<system.serviceModel>
    <bindings />
    <client />
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8730/DBService/Metadata" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="1000" maxConcurrentInstances="1000" />
          <dataContractSerializer maxItemsInObjectGraph="6553600"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="ServiceBehavior" name="ABCDE.NetService.Class.DBService">
        <endpoint address="http://localhost:8730/MyService/" binding="basicHttpBinding"
           name="DBService" contract="ABCDE.NetService.Interface.IDBService" >
        </endpoint>
      </service>
    </services>
  </system.serviceModel>我在代码中想通过用户的设置来改变默认的终结点设置string url = string.Format("http://{0}:{1}/DBService/", "192.168.1.100", "1234");
                    Uri baseAddress = new Uri(url);
                    ServiceHost host = new ServiceHost(typeof(DBService), baseAddress);
                    host.AddServiceEndpoint(typeof (IDBService), new BasicHttpBinding(), "");
                    host.Open();通过以上代码应该是覆盖配置文件的设置,但现实情况是ip地址覆盖,但端口号仍然必须用8730来访问,用新的端口号1234来访问会找不到终结点,这是什么原因呀?

解决方案 »

  1.   

    但现实情况是,我用http://192.168.1.100:1234/DBService/会找不到终结点,只能用http://192.168.1.100:8730/DBService/来访问
      

  2.   

    额,你那种写法指示定义了一个基地址,而不是定义接口地址,基地址只用在http帮助上面,其它没用。
    定义接口地址要在后面定义,代码示例如下:
    using (ServiceHost serviceHost = new ServiceHost(typeof(DBService)))
    {
        EndpointAddress address = new EndpointAddress(baseAddress, EndpointIdentity.CreateDnsIdentity("identity.com"));
        ServiceEndpoint ep = host.AddServiceEndpoint(typeof (IDBService), new BasicHttpBinding(), "");
        ep.Address = address;//这才是真正的接口地址