Проблема с развертыванием приложения ADO.Net Data Service в IIS - PullRequest
14 голосов
/ 10 сентября 2008

Я добавляю функцию поиска ADO.Net Data Service на существующую веб-страницу. Все отлично работает при запуске из Visual Studio, но при развертывании его в IIS я получаю следующую ошибку:

Ошибка запроса
Сервер обнаружил ошибку при обработке запроса. Подробнее смотрите в журналах сервера.

Я получаю это даже при попытке отобразить страницу по умолчанию, т. Е .:

http://server/FFLookup.svc

У меня установлено 3.5 SP1 на сервере.

Чего мне не хватает, и к каким «журналам сервера» он относится? Я не могу найти больше сообщений об ошибках.

В журналах средства просмотра событий (система или приложение) ничего нет, и в журналах IIS нет ничего, кроме GET:

2008-09-10 15:20:19 10.7.131.71 GET /FFLookup.svc - 8082 - 10.7.131.86 Mozilla / 5.0 + (Windows; + U; + Windows + NT + 5.1; + en-US) + AppleWebKit / 525.13 + (KHTML, + like + Gecko) + Chrome / 0.2.149.29 + Safari / 525.13 401 2 2148074254

Трассировка стека не возвращается. Единственный ответ, который я получаю, это «Ошибка запроса», как отмечено выше.

Спасибо

Patrick

Ответы [ 3 ]

42 голосов
/ 10 ноября 2008

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

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]  

Это отобразит ошибку в окне вашего браузера, а также трассировку стека.

В дополнение к этому dataservices выдает все исключения в метод HandleException, поэтому, если вы реализуете этот метод в своем классе dataservice, вы можете поставить точку останова и увидеть исключение:

protected override void HandleException(HandleExceptionArgs e)
{
  try
  {
    e.UseVerboseErrors = true;
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.Message);
  }
}
13 голосов
/ 11 сентября 2008

Ну, я нашел «Журналы сервера», упомянутые в приведенной выше ошибке.

Вам необходимо включить трассировку в файле web.config, добавив следующие теги:

    <system.diagnostics>
      <sources>
        <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing" >
            <listeners>
                <add name="ServiceModelTraceListener"/>
            </listeners>
        </source>

        <source name="System.ServiceModel" switchValue="Verbose,ActivityTracing"        >
            <listeners>
                <add name="ServiceModelTraceListener"/>
            </listeners>
        </source>
        <source name="System.Runtime.Serialization" switchValue="Verbose,ActivityTracing">
            <listeners>
                <add name="ServiceModelTraceListener"/>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add initializeData="App_tracelog.svclog"   
                        type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                        name="ServiceModelTraceListener" traceOutputOptions="Timestamp"/>
    </sharedListeners>
</system.diagnostics>

Это создаст файл app_tracelog.svclog в каталоге вашего сайта.

Затем вы используете утилиту SvcTraceViewer.exe для просмотра этого файла. Зритель хорошо выделяет ошибки (наряду с множеством другой информации о сообщениях).

Осторожно: файл журнала, созданный с указанными выше параметрами, очень быстро увеличивается. Включайте его только во время отладки!

В данном конкретном случае проблема заключалась в неправильной версии OraDirect.Net, нашего провайдера данных Oracle. Версия, которую мы использовали, не поддерживала 3.5 SP1.

0 голосов
/ 06 июля 2010

Для меня ошибка была вызвана двумя методами с одинаковыми именами (непреднамеренная перегрузка).

Перегрузка не поддерживается, но тип 'abc' имеет перегруженный метод 'Void SubmitCart (System.String, Int32)'.

Я выяснил, запустив службу в режиме отладки.

...