1

エンドポイントをIIS(Express)で動作させようとしています。IIS Expressを使用してVSでプロジェクトをデバッグし、ブラウザーでエンドポイントアドレスを開くと、通常の404エラーが発生します。

私のweb.config:

<?xml version="1.0"?>
<configuration>
    <system.web>
      <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
      <behaviors>
        <serviceBehaviors>
          <behavior>
            <serviceMetadata httpGetEnabled="true"/>
            <serviceDebug httpHelpPageEnabled="false" includeExceptionDetailInFaults="true"/>
          </behavior>
        </serviceBehaviors>
      </behaviors>
      <services>
        <service name="A.B.C">
          <host>
            <baseAddresses>
              <add baseAddress="http://localhost:15000"/>
            </baseAddresses>
          </host>
          <endpoint address="Test" binding="basicHttpBinding" contract="A.B.IC" bindingConfiguration="A.B.C">

          </endpoint>
        </service>
      </services>
      <bindings>
        <basicHttpBinding>
          <binding name="A.B.C"
                   maxBufferPoolSize="20971520"
                   maxBufferSize="2097152"
                   maxReceivedMessageSize="2097152">
          </binding>
        </basicHttpBinding>
      </bindings>
    </system.serviceModel>
</configuration>

次の内容の.svc-DateiをWebサイトのルートに配置すると、正常に機能します。

<%@ ServiceHost Service="A.B.C" CodeBehind="Services/C.svc.cs" %>
4

2 に答える 2

1

IISホスティングを使用する場合は、独自のベースアドレスを指定しないでください。サービスのベースアドレスは、.svcファイルの場所によって指定されます。その場合、エンドポイントアドレスは.svcファイルに相対的です。

.svcファイルは、IISが要求を(たとえばASP.NETではなく)WCFにマップするために使用されます。

これで、serviceActivationsを使用して物理ファイルではなく、仮想.svcファイルを作成できます。または、 ASpNetCompaibilityを使用して、この記事に示すようにServiceRouteを使用して.svc部分を完全に削除できます。

于 2011-07-19T09:35:29.750 に答える
0

あなたはあなた自身の質問に答えたと思います。HTTP経由でホストする場合は、Webサーバーがサービスをインスタンス化できるように.svcファイルが必要です。net.tcpやnet.msmqなどの他のバインディングには、この要件はありません。

于 2011-07-19T09:15:21.130 に答える