2016-03-02 3 views
0
[InvalidOperationException: Invalid operation. The connection is closed.] 
System.Data.SqlClient.SqlConnection.GetOpenConnection() +2417814 
System.Data.SqlClient.SqlConnection.get_ServerVersion() +9 

Я получаю эту ошибку, пока я сериализую свой объект.InvalidOperationException: Неверная операция. Соединение закрыто. в Asp.Net MVC при попытке сериализации объекта класса

public string SerializeObj(TemplateData obj) 
    { 
     string data = null; 
     try 
     { 
      JavaScriptSerializer js = new JavaScriptSerializer(); 
      ** data = js.Serialize(obj); [This is what i am finding issue is][1]** 
     } 
     catch (InvalidOperationException iopException) 
     { 
      string exception = iopException.Data.ToString(); 
      return exception; 
     } 
     return data; 

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

Может ли кто-нибудь предложить мне, как решить эту проблему?

Когда я сериализую свой объект, он берет мой класс с именем TemplateData.

public List<TemplateData> List(string myKey) 
    { 
     TemplateBusinessLogic businessLogic = new TemplateBusinessLogic(); 
     TemplateData templateData = new TemplateData(); 
     templateData.key = myKey; 
      string postKey = businessLogic.SerializeObj(templateData); 
     string listUrl = MandrillAutomation.Helper.Config.ConfigManager.ConstantsConfig.GetValue("listUrl"); 
     string requestContent = HttpRequestUrl(listUrl, "POST", postKey); 
     List<TemplateData> listContent = businessLogic.DeserializeObj<List<TemplateData>>(requestContent); // DESERIALIZE OBJECT 

     for (int i = 0; i <= listContent.Count-1; i++) 
     { 
      FileHelper fileHelp = new FileHelper(); 
      fileHelp.SaveTemplate(listContent[i].name, listContent[i].code); 
     } 
     //SaveTemplate(listContent); //Save Templates into desire format 

     log.Info(listContent.Count + " Templates avilable"); 
     log.Info("[ "); 
     log.Info("Templates :" + GetTemplateName(listContent)); 
     log.Info(" ]"); 
     foreach (var content in listContent) 
     { 
      log.Info("Name of Template : " + content.name + " || Slug of Template : " + content.slug + " || in Account : " + myKey); 
     } 
     return listContent; 
    } 

И у меня есть класс TemplateData, как показано ниже:

public class TemplateData :DbContext 
{ 
    public string key {get; set;} 
    public string name { get; set; } 
    public string slug { get; set; } 
    public string fromEmail { get; set; } 
    public string fromName { get; set; } 
    public string subject { get; set; } 
    public string code { get; set; } 
    public string text { get; set; } 
    public string publish { get; set; } 
    public string[] labels { get; set; } 
    public string created_at{ get; set; } 
    public string updated_at { get; set; } 
} 
+0

Что такое код, который вызывает этот метод и как вы передаете значение 'obj'? –

+0

У этого есть тип моего TemplateData. Подождите, я добавлю его в свой вопрос. –

+0

Я скопировал вашу модель и метод 'SerializeObj()' в новый проект, запустил его и не было ошибки. В коде должно быть что-то еще, что вы не показали нам, что вызывает проблему. –

ответ

0

Я просто извлекая DbContext из моего TemplateData класса. И нет никакой ошибки. :)