3

私はWCFを初めて使用し、ファイルのない単純なアプリケーションの一部(web.config)を以下に示します。

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true">
        <serviceActivations>
            <add
                factory="System.ServiceModel.Activation.ServiceHostFactory"
                relativeAddress="./RelativeAddress.svc"
                service="WCF_Transactions.MyService1"/>
        </serviceActivations>
    </serviceHostingEnvironment>

今、私はでサービスにアクセスすることができます

http://localhost:18148/RelativeAddress.svc

次に、次の行を追加します。

    <services>
        <service name="WCF_Transactions.MyService1" behaviorConfiguration="MyBehavior1">
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:18148/" />
                </baseAddresses>
            </host>
            <endpoint  address="/RelativeAddressX.svc" binding="basicHttpBinding" contract="WCF_Transactions.IService1"></endpoint>
        </service>
    </services>

    <behaviors>
        <serviceBehaviors>
            <behavior name="MyBehavior1">
                <serviceMetadata httpGetEnabled="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>

したがって、次のアドレスからサービスにアクセスできると思います。

  http://localhost:18148/RelativeAddressX.svc

しかし、私はこれを行うことはできません。私は何を誤解しましたか?

4

2 に答える 2

2

IIS または Cassini でホストする場合、構成ファイルで指定する必要はありません。ベース URL は Web サーバーによって提供されます。この要素は、セルフホスティング時に使用されます。Cassini (Web サーバーの VS ビルド) はそれを無視します。

WCF アドレッシングに関する適切なページは次のとおりです: http://msdn.microsoft.com/en-us/magazine/cc163412.aspx

ここにいくつかの関連記事があります: WCF サービス エンドポイントとホスト ベース アドレス WCF、エンドポイントの baseAdress の変更

于 2013-02-13T09:04:31.943 に答える