为什么我必须在WCF配置中指定我的地址(它实际上正在工作)

本文关键字:地址 实际上 我的 工作 WCF 配置 为什么 | 更新日期: 2023-09-27 17:58:42

我已经设置了一个wcf服务,当我浏览到.svc文件时,我会看到一个屏幕,上面写着。。。

您已经创建了一个服务。

所以我知道该服务正在成功运行。然而,我查看了配置,它实际上没有地址。

<system.serviceModel>
    <services>
      <service behaviorConfiguration="CountryProvinceBehavior" name="CountryProvinceWCFService">
        <endpoint address="" binding="webHttpBinding" contract="ICountryProvinceWCFService" behaviorConfiguration="CountryProvinceBehavior"/>
      </service>
    </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="CountryProvinceBehavior">
                    <serviceMetadata httpGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="true"/>
                </behavior>
            </serviceBehaviors>
            <endpointBehaviors>
                <behavior name="CountryProvinceBehavior">
                    <webHttp/>
                </behavior>
            </endpointBehaviors>
        </behaviors>
    </system.serviceModel>

然后我编写了一个控制台应用程序来测试该服务。

我从浏览器中获得了url,并从控制台应用程序中添加了一个"服务参考",我希望该项目在我的配置文件中创建enpoint定义。然后,当我创建客户端时,我可以加载其中一个配置,但它们不存在。。。。

为什么我必须在WCF配置中指定我的地址(它实际上正在工作)

您不必在配置中指定地址,尽管在本例中您确实指定了端点的地址(")。这意味着WCF将使用它作为相对于服务基地址的地址。如果服务托管在IIS中,那么它将是.svc文件的地址。如果服务是自托管的(即直接使用ServiceHost),那么地址将是传递给ServiceHost构造函数的地址。