Служба данных OData / WCF - ошибка HTTP 500 - PullRequest
12 голосов
/ 12 июня 2010

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

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

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

Сообщение в блоге находится на Предоставление 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.

Есть еще идеи?

Ответы [ 7 ]

16 голосов
/ 16 июня 2010

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

config.UseVerboseErrors=true;

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

Eric

5 голосов
/ 19 марта 2011

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

5 голосов
/ 16 июня 2010

Пожалуйста, попробуйте эти советы по отладке, чтобы увидеть фактическую ошибку, которая произошла: http://blogs.msdn.com/b/phaniraj/archive/2008/06/18/debugging-ado-net-data-services.aspx

2 голосов
/ 10 января 2014

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

HTTP 500 Internal Server Error screenshot

Решено путем обновления Entity Framework.

См. Ответ https://stackoverflow.com/a/21028123/2116188.

2 голосов
/ 13 июня 2010

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

1 голос
/ 18 июня 2012

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

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

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

Использование трассировки невыполненных запросов для отслеживания правил перезаписи

НТН Седрик

0 голосов
/ 18 июня 2012

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

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

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