WCF HTTP 504 Ошибка - PullRequest
       0

WCF HTTP 504 Ошибка

2 голосов
/ 21 марта 2012

У меня следующая проблема. Я использую Entity Framework для подключения к SQL Azure, и это работает (я тестировал его в тестовом проекте).

Но когда я пытаюсь получить его через службу WCF RESTful, выдается ошибка 504.

Мой контракт на эксплуатацию:

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

Реализация [ServiceContract]:

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. Я использую Fiddler, что он говорит, когда я пытаюсь достичь

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

есть

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

WCF App.Config выглядит так:

    <?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: Когда я пытаюсь получить доступ к URL через браузер, я получаю следующее:

Request Error

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

Ответы [ 3 ]

4 голосов
/ 21 марта 2012

Попробуйте включить Трассировка и посмотрите, не превышает ли ваш запрос значения по умолчанию, из-за которых вы получаете ошибку тайм-аута.

Проверьте журнал трассировки на наличиеподробное сообщение о том, почему происходит сбой, а затем надлежащим образом выполните необходимые шаги, чтобы увеличить либо значения тайм-аута, либо ограничения размера по умолчанию

0 голосов
/ 21 марта 2012

Я не думаю, что это ошибка сети.Вопрос в сервисе.Может быть, вы получите 504 не от IIS, но от Fiddler. Прочтите это .Возможно, вам придется увеличить maxItemsInObjectGraph

0 голосов
/ 21 марта 2012

Если ваша сетевая среда настроена так, чтобы весь HTTP-трафик проходил через прокси-сервер, то, вероятно, учетной записи, под которой работает пул приложений IIS, не разрешено отправлять HTTP-трафик. В качестве теста измените учетную запись пула приложений на свою учетную запись и посмотрите, успешно ли подключается служба WCF. Сообщение 504 обычно является проблемой прокси или сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...