Проблема развертывания приложения ADO.Net Data Service в IIS

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

Ошибка запроса
На сервере возникла ошибка при обработке запроса. Подробнее см. Журналы сервера.

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

http://server/FFLookup.svc

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

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

В журналах просмотра событий (System или Application) ничего нет, и ничего в журналах 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

Нет возврата трассировки стека. Единственный ответ, который я получаю, - это "Ошибка запроса", как указано выше.

Спасибо

Патрик

Ответы

Ответ 1

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

[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);
  }
}

Ответ 2

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

Вам нужно включить трассировку в файле 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.

Ответ 3

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

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

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