Подтвердить что ты не робот

Служба данных OData/WCF - ошибка HTTP 500

Я создал службу OData/WCF с использованием Visual Studio 2010 в Windows XP с пакетом обновления 3 (SP3) и установил все текущие исправления.

Когда я нажимаю "просмотреть в браузере", сервис открывается, и я вижу 3 таблицы из моей модели EF. Однако, когда я добавляю имя таблицы (в данном случае "Команды") в конец строки запроса, а не вижу данные из таблицы, я получаю ошибку HTTP 500. (Эта ошибка (внутренняя ошибка сервера HTTP 500) означает, что на веб-сайте, который вы посещаете, была проблема с сервером, из-за которой веб-страница не отображалась.).

Я не только следовал за примерами с 2 сайтов, но также пытался запустить пример приложения, которое мне прислал постер блога (который работает на его компьютере), и до сих пор мне не везет.

Сообщение в блоге находится в Exposing OData от Entity Framework Model

У кого-нибудь есть идея, почему это происходит и как ее решить?

Вот вывод "View in Browser":

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
- <service xml:base="http://localhost:1883/VistaDBCommandService.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
- <workspace>
  <atom:title>Default</atom:title> 
- <collection href="Commands">
  <atom:title>Commands</atom:title> 
  </collection>
- <collection href="Databases">
  <atom:title>Databases</atom:title> 
  </collection>
- <collection href="Statuses">
  <atom:title>Statuses</atom:title> 
  </collection>
  </workspace>
  </service>

Обновить:

Чтобы заставить это работать, у меня есть:

  1. Удален и переустановлен IIS
  2. Выполнить команду% WINDIR%\Microsoft.Net\Framework\v4.0.30319\aspnet_regiis –i –enable
  3. Выполните команду% WINDIR%\Microsoft.Net\Framework\v4.0.30319\ServiceModelReg.exe -r.
  4. Создал новое решение и очень тщательно следовал инструкциям, чтобы не допустить ошибок.

После всего этого я все еще получаю ту же ошибку HTTP 500 без каких-либо записей в Event Viewer.

Есть другие идеи?

4b9b3361

Ответ 1

Я понял, что проблема связана с открытием базы данных. Как я понял, это добавить следующее в файл servicename.svc.cs в методе InitializeService:

config.UseVerboseErrors=true;

Спасибо всем, кто пытался помочь.

Эрик

Ответ 3

config.UseVerboseErrors=true; помог мне разобраться с проблемой. Проблема была в том, что я использовал проверку подлинности Windows для подключения к базе данных. После перехода на SQL Server Authentication все работало нормально.

Ответ 4

500 всегда означает, что в службе было необработанное исключение. Перейдите в журнал событий Windows, чтобы узнать, что это за ошибка.

Ответ 5

Получил аналогичный вывод с VS2013:

HTTP 500 Internal Server Error screenshot

Решено путем обновления инфраструктуры Entity Framework.

См. ответ fooobar.com/questions/425952/....

Ответ 6

Вы также можете активировать Failed Request Tracing для своего веб-приложения в IIS

то вы получите подробное выполнение трассировки в Xml файлах из IIS при возникновении ошибки 500

Здесь есть хорошая статья, объясняющая, как настроить Failed Request Tracing в IIS:

Использование Failed Request Tracing для отслеживания правил перезаписи

НТН Седрик

Ответ 7

Если вы используете файл данных SQL Server Compact (например, NorthWind.sdf), вам необходимо предоставить разрешение на запись в группу IUSRS.

Пример: если вы используете NorthWind.sdf в DataDirectory, то есть YourWeb/App_Data, вам нужно предоставить права на запись в группу _IUSRS из консоли IIS или из проводника Windows.