2012-03-21 26 views
2

次の問題があります。私はEntity Frameworkを使用してSQL Azureに接続しており、これは動作します(テストプロジェクトでテストしました)。WCF HTTP 504エラー

しかし、私は、WCF RESTfulなサービスを経由して、それを取得しようとする場合には、エラー504

マイ運用契約スロー:[ServiceContract]

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "/Artikli", ResponseFormat = WebMessageFormat.Json)] 
    IEnumerable<Artikal> GetArtikli(); 
} 

実装:

public class Service : IService 
{ 
    public IEnumerable<Artikal> GetArtikli() 
    { 
     using (var context = new CijenolomciEntities()) 
     { 
      var result = context.Artikals.ToList(); 
      result.ForEach(a => context.Detach(a)); 
      return result; 
     } 

    } 
} 

全部ですがローカルIIS上でホストされます。

<?xml version="1.0"?> 
    <configuration> 
     <connectionStrings> 
      <add name="CijenolomciEntities" connectionString="My_Connection_String" providerName="System.Data.EntityClient" /> 
     </connectionStrings> 

     <system.web> 
     <compilation debug="true" targetFramework="4.0" /> 
     </system.web> 

     <system.serviceModel> 
      <protocolMapping> 
       <add scheme="http" binding="webHttpBinding" /> 
      </protocolMapping> 
      <behaviors> 
       <endpointBehaviors> 
        <behavior> 
         <webHttp /> 
        </behavior> 
       </endpointBehaviors> 
      <serviceBehaviors> 
      <behavior> 
       <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
       <serviceMetadata httpGetEnabled="true"/> 
       <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
       <serviceDebug includeExceptionDetailInFaults="false"/> 
      </behavior> 
      </serviceBehaviors> 
     </behaviors> 
     <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
     </system.serviceModel> 

     <system.webServer> 
     <modules runAllManagedModulesForAllRequests="true"/> 
     </system.webServer> 

    </configuration> 

EDIT: 私は私が

http://localhost:17916/Service.svc/Artikli 

に到達しようとすると、それは言うWCF App.configファイルのように見える

[Fiddler] ReadResponse() failed: The server did not return a response for this request.

あり、フィドラーを使用しますブラウザからURLにアクセスしようとすると、次のような結果になります。

Request Error 

The server encountered an error processing the request. See server logs for more details. 

答えて

4

Tracingを有効にして、タイムアウトエラーが発生したために要求がデフォルト値を超えていないかどうかを確認してください。

は、それが失敗している理由について、詳細なエラーのトレースログを検査して、適切にタイムアウト値またはデフォルトのサイズ制限

+0

Web.configでエンドポイントを指定していない可能性はありますか? – Bip

0

すべてのHTTPトラフィックをプロキシサーバー経由にするようにネットワーク環境が設定されている場合は、IISアプリケーションプールが実行されているアカウントでHTTPトラフィックを送信できない可能性があります。テストとして、アプリケーションプールアカウントをログインアカウントに変更し、WCFサービスが正常に接続されているかどうかを確認します。 504メッセージは通常、プロキシまたはネットワークの問題です。

+0

のいずれかを増加させるために必要な手順を実行しますがそれを行う方法をもう少し説明できますか? – Bip

+0

ここには、IISアプリケーションプールのアカウントを設定するための[良い記事](http://learn.iis.net/page.aspx/624/application-pool-identities/)があります。現在のアカウントをあなたのログインアカウントに置き換え、それが動作するかどうかを確認するだけです。 –

0

私はネットワークエラーではないと思います。問題はサービス中です。あなたはIISからではなく、Fiddlerから504を受け取るかもしれません。 Read thismaxItemsInObjectGraph