2013-06-25 5 views
1

У меня есть куча классов обслуживания JSON, используемых через вызовы ajax на моем сайте asp.net. Все работали нормально, пока пару дней назад один из классов не стал видимым клиентом.Класс обслуживания JSON не определен клиентская сторона

Это называется ExceptionsJSONService и когда я пытаюсь создать его экземпляр в JavaScript с помощью

var service = new ExceptionsJSONService(); 

Я получаю «объект Прогнозный». Я не могу понять, что могло измениться с тех пор, как он работал нормально. Я проверил web.config и услуги определяется там через:

<behavior name="ExceptionsJSONServiceAspNetAjaxBehavior"> 
     <enableWebScript /> 
    </behavior> 

и позже:

<service name="ExceptionsJSONService"> 
    <endpoint address="" behaviorConfiguration="ExceptionsJSONServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="ExceptionsJSONService" /> 
    </service> 

Он определяется в главной странице с помощью ScriptManager в:

<asp:ServiceReference Path="~/Services/ExceptionsJSONService.svc" /> 

У меня есть служебный файл, который содержит следующие данные:

<%@ ServiceHost Language="C#" Debug="true" Service="ExceptionsJSONService" CodeBehind="~/App_Code/ExceptionsJSONService.cs" %> 

И я сам файл определения класса, заголовок которого является:

[ServiceContract(Namespace = "")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class ExceptionsJSONService : BaseJSONService {} 

я опустил тело класса из-за длины, но он строит отлично и идентичен за исключением имени для всех моих других Классы JSONService.

+0

Не могли бы вы проверить http://msdn.microsoft.com/en-us/library/bb924552.aspx на отсутствие конфигурации? –

ответ

0

Проблема была вызвана публичной функцией, определенной в классе ExceptionsJSONService. Функция должна быть общедоступной, но она также была отмечена как Операционный контракт.

В списке параметров для функции был наш контекстный объект EF DB. Поскольку он был в списке параметров для Операционного договора, он заставил службу искать Контракты данных для всех объектов, связанных с контекстом БД. Это вызвало исключение исключения, которое появилось только в журналах трассировки службы. Исключение не позволяло службе правильно загрузиться, поэтому, когда я попытаюсь создать экземпляр клиентской части службы в javascript, это не сработает.

Снятие атрибута Operation Contract из функции разрешило проблему.