1

appharbor.comでWCFWebサービスをホストしようとしていますが、ローカルでホストするとサービスは期待どおりに応答しますが、appharborでビルドしてホストすると、404しか返されません。

サービスはコンソールアプリケーションで実行されています。

namespace Service.Host
{
    class Program
    {

        static void Main(string[] args)
        {

            var host = new ServiceHost<AchievementService>();

            host.Open();

            Console.WriteLine("AchievementService is running...\nPush any key to terminate.");
            Console.ReadLine();

            host.Close();
        }
    }
}

app.configは次のようになります。

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
   <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <services>
      <service name="Service.Main.AchievementService">
        <host>
          <baseAddresses>
            <add baseAddress="http://achiever.apphb.com"/>
            <!--<add baseAddress="http://localhost"/>-->
          </baseAddresses>
        </host>
        <endpoint address="AchievementService/"
                  behaviorConfiguration="RestBehavior"
                  binding="webHttpBinding"
                  contract="Service.Main.Contracts.IAchievementService"/>
        <endpoint address="mex" 
                  binding="mexHttpBinding" 
                  contract="IMetadataExchange" />
      </service>
    </services>

    <behaviors>
      <endpointBehaviors>
        <behavior name="RestBehavior">
          <webHttp helpEnabled="true" />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>

値「http:// localhost」を含むベースアドレスを使用すると、Webサービスのgetメソッド、メタデータ、ヘルプなどにアクセスできます。しかし、それをachiever.apphb.comに変更してビルドすると、http ://achiever.apphb.com/AchievementService/またはhttp://achiever.apphb.com/で404しか受信しません。

私が試したのは、アドレスのさまざまな構成です。appharborでビルドされたlocalhostを試しましたが、同じ結果になりました。例も検索しましたが、この問題を解決するのに役立つものは見つかりませんでした。

サービスは展開されており、テストは含まれていません。appharborからのメモがあります。

5/5/12 6:02 PM: Received notification, queuing build
5/5/12 6:02 PM: Downloading source
5/5/12 6:02 PM: Downloaded source in 0.27 seconds
5/5/12 6:02 PM: Starting build
5/5/12 6:02 PM: 0 warnings
5/5/12 6:02 PM: Build completed in 1.57 seconds Details
5/5/12 6:02 PM: Starting website precompilation
5/5/12 6:02 PM: Precompilation completed
5/5/12 6:02 PM: Starting tests
5/5/12 6:02 PM: Tests completed in 2.39 seconds
5/5/12 6:02 PM: Build successfully deployed
Tests

Build contains no tests
4

2 に答える 2

0

WCFサービスのメタデータに問題がありました。しかし、*。svcの場所を使用してWCFサービスが存在することを確認できました。http://achiever.apphb.com/AchievementService/ [サービスの名前].svcは機能しますか?

編集:この修正を試してくださいAppHarborでWCF Web APIアプリをホストしますか?

于 2012-06-16T18:45:37.060 に答える
0

ビルドのステータスとテストを確認してください。テストの 1 つが失敗した場合、プロジェクトはデプロイできません。

于 2012-05-05T16:25:11.513 に答える