DCNick3 4 / 4 / 6 Регистрация: 03.05.2014 Сообщений: 101 |
||||
1 |
||||
01.06.2015, 00:08. Показов 6658. Ответов 2 Метки нет (Все метки)
Пытаюсь сериализировать — Фиг Exception Необработанное исключение типа «System.InvalidOperationException» в System.Xml.dll Дополнительные сведения: Ошибка при создании документа XML. Привожу классы: Class’ы
Может проблема в абстрактах… Кароч выручайте, как можно изменить. P.S. BinaryFormatter не пойдёт, ибо фалы человеки писать будут (в основном будем их читать)
__________________
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
01.06.2015, 00:08 |
Ответы с готовыми решениями: Сериализация в Xml в С# XML сериализация 1. Как при сериализации XmlSerializer xmlSerializer = new… Сериализация в xml XML сериализация списка 2 |
Someone007 6270 / 3898 / 1567 Регистрация: 09.05.2015 Сообщений: 9,189 |
||||||||
01.06.2015, 04:33 |
2 |
|||||||
0 |
DCNick3 4 / 4 / 6 Регистрация: 03.05.2014 Сообщений: 101 |
||||||||
01.06.2015, 21:58 [ТС] |
3 |
|||||||
Сериализую так:
Добавлено через 3 минуты More DATA
System.InvalidOperationException не обработано Добавлено через 15 минут
1 |
I am writing a web app using MVC3 but when trying to pass an object to the controller and show it it doesn’t seem to recognize the type or something.
I have a Job object, and a JobService
returning a Job
like this:
public Job View(int jobId)
{
Job job=_jobRepository.Jobs.Where(x => x.Id == jobId).FirstOrDefault();
return job;
}
Within the WebService I call View like this:
[WebMethod]
public Job GetJob(GetJobRequest getJobRequest)
{
var getJobResponse = new GetJobResponse();
getJobResponse.Job = _jobService.View(getJobRequest.Id);
return getJobResponse.Job;
}
Then the Controller calls this:
public class JobsController : Controller
{
public ActionResult Index()
{
var jobModel = new JobModel();
using (var webServiceSoapClient = new WebServiceSoapClient())
{
var getJobRequest = new GetJobRequest();
getJobRequest.Id = 26038;
jobModel.Job = webServiceSoapClient.GetJob(getJobRequest);
}
return View(jobModel);
}
}
And it’s throwing this error:
System.Web.Services.Protocols.SoapException: Server was unable to process request. —> System.InvalidOperationException: There was an error generating the XML document. —> System.InvalidOperationException: The type System.Data.Entity.DynamicProxies.Job_55765AEC3BD02AFD7E0527408ED5746E1054965A59B82A127B5A688C19C61D5B was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_Job(String n, String ns, Job o, Boolean isNullable, Boolean needType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write18_GetJobResponse(Object[] p)
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer13.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
— End of inner exception stack trace —
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
at System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
at System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
at System.Web.Services.Protocols.WebServiceHandler.Invoke()
— End of inner exception stack trace —
At first I was passing a GetJobResponse
to the service but I tried to make it as simple as possible now to get it working and I still can’t figure it out. I have seen that there are other questions suggesting the use of XmlInclude and stuff but it still doesn’t work.
Applying this:
public string SerializeObjectToXMLString(object theObject)
{
// Exceptions are handled by the caller
using (System.IO.MemoryStream oStream = new System.IO.MemoryStream())
{
System.Xml.Serialization.XmlSerializer oSerializer = new System.Xml.Serialization.XmlSerializer(theObject.GetType());
oSerializer.Serialize(oStream, theObject);
return Encoding.Default.GetString(oStream.ToArray());
}
}
To the Job returned by View in a test it passes the test so I guess the problem comes from my webservice.
Please help meeee :'(
I am writing a web app using MVC3 but when trying to pass an object to the controller and show it it doesn’t seem to recognize the type or something.
I have a Job object, and a JobService
returning a Job
like this:
public Job View(int jobId)
{
Job job=_jobRepository.Jobs.Where(x => x.Id == jobId).FirstOrDefault();
return job;
}
Within the WebService I call View like this:
[WebMethod]
public Job GetJob(GetJobRequest getJobRequest)
{
var getJobResponse = new GetJobResponse();
getJobResponse.Job = _jobService.View(getJobRequest.Id);
return getJobResponse.Job;
}
Then the Controller calls this:
public class JobsController : Controller
{
public ActionResult Index()
{
var jobModel = new JobModel();
using (var webServiceSoapClient = new WebServiceSoapClient())
{
var getJobRequest = new GetJobRequest();
getJobRequest.Id = 26038;
jobModel.Job = webServiceSoapClient.GetJob(getJobRequest);
}
return View(jobModel);
}
}
And it’s throwing this error:
System.Web.Services.Protocols.SoapException: Server was unable to process request. —> System.InvalidOperationException: There was an error generating the XML document. —> System.InvalidOperationException: The type System.Data.Entity.DynamicProxies.Job_55765AEC3BD02AFD7E0527408ED5746E1054965A59B82A127B5A688C19C61D5B was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_Job(String n, String ns, Job o, Boolean isNullable, Boolean needType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write18_GetJobResponse(Object[] p)
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer13.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
— End of inner exception stack trace —
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
at System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
at System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
at System.Web.Services.Protocols.WebServiceHandler.Invoke()
— End of inner exception stack trace —
At first I was passing a GetJobResponse
to the service but I tried to make it as simple as possible now to get it working and I still can’t figure it out. I have seen that there are other questions suggesting the use of XmlInclude and stuff but it still doesn’t work.
Applying this:
public string SerializeObjectToXMLString(object theObject)
{
// Exceptions are handled by the caller
using (System.IO.MemoryStream oStream = new System.IO.MemoryStream())
{
System.Xml.Serialization.XmlSerializer oSerializer = new System.Xml.Serialization.XmlSerializer(theObject.GetType());
oSerializer.Serialize(oStream, theObject);
return Encoding.Default.GetString(oStream.ToArray());
}
}
To the Job returned by View in a test it passes the test so I guess the problem comes from my webservice.
Please help meeee :'(
привет, у меня есть следующий код для сериализации xml:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string savepath;
SaveFileDialog DialogSave = new SaveFileDialog();
// Default file extension
DialogSave.DefaultExt = "txt";
// Available file extensions
DialogSave.Filter = "XML file (*.xml)|*.xml|All files (*.*)|*.*";
// Adds a extension if the user does not
DialogSave.AddExtension = true;
// Restores the selected directory, next time
DialogSave.RestoreDirectory = true;
// Dialog title
DialogSave.Title = "Where do you want to save the file?";
// Startup directory
DialogSave.InitialDirectory = @"C:/";
DialogSave.ShowDialog();
savepath = DialogSave.FileName;
DialogSave.Dispose();
DialogSave = null;
FormSaving abc = new FormSaving();
if (MajorversionresultLabel != null && MajorversionresultLabel.Content != null && MajorversionLabel.Content.ToString() != string.Empty)
abc.Majorversion = MajorversionresultLabel.Content.ToString();
//abc.Minorversion = MinorversionresultLabel.Content.ToString();
//abc.Projectnumber = ProjectnumberresultLabel.Content.ToString();
//abc.Buildnumber = BuildnumberresultLabel.Content.ToString();
//abc.Previousbuildversion = PreviousbuildversionresultLabel.Content.ToString();
abc.Startzbuildfrom = StartzbuildfromcomboBox.SelectedItem;
using (Stream savestream = new FileStream(savepath, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
serializer.Serialize(savestream, abc);
}
}
ошибка «Произошла ошибка при создании XML-документа» возникает в serializer.Serialize(savestream, abc);
мой класс сохранения формы:
public class FormSaving
{
public string Majorversion
{
get;
set;
}
public string Minorversion
{
get;
set;
}
public string Projectnumber
{
get;
set;
}
public string Buildnumber
{
get;
set;
}
public string Previousbuildversion
{
get;
set;
}
public object Startzbuildfrom
{
get;
set;
}
}
кто-нибудь может помочь мне это исправить?
EDIT:
Я пробовал это, но это тоже не работает:
под «кнопкой сохранения»
abc.Startzbuildfrom = StartzbuildfromcomboBox.SelectedItem.ToString();
под «кнопкой загрузки»
StartzbuildfromcomboBox.SelectedItem = abc.Startzbuildfrom;
вот как я заполняю элементы поля со списком:
<ComboBox Height="23" Margin="577,72,497,0" Name="StartzbuildfromcomboBox" VerticalAlignment="Top"><ComboBoxItem>library</ComboBoxItem></ComboBox>
|
|||
SFilchakov
10.06.16 — 22:32 |
Всем привет! Хочу кое что в хмл запихнуть.
Пишу в модуле объекта обработки
\\
Ошибка при вызове метода контекста (ОткрытьФайл)
////// Подскажите, что не так? |
||
Dmitry1c
1 — 10.06.16 — 22:33 |
наклонная черта в другую сторону.. |
||
Dmitry1c
2 — 10.06.16 — 22:35 |
или контекст на сервере |
||
SFilchakov
3 — 10.06.16 — 22:38 |
Что значит контекст на сервере? Это в модуле обработки на 8.3 Поменял наклон, тоже самое. |
||
Лефмихалыч
4 — 10.06.16 — 22:38 |
(0) это все происходит на сервере приложений, а там все не так, как у тебя на клиенте |
||
SFilchakov
5 — 10.06.16 — 22:40 |
Это надо делать на клиенте что ли? |
||
SFilchakov
6 — 10.06.16 — 22:42 |
Спасибо, теперь понял. А как же желать загрузку выгрузку по регламентному заданию через файл xml? если регламентное задание крутится на сервере, а файл можно создать только на клиенте и перейти с сервера на клиент нельзя? |
||
Лефмихалыч
7 — 10.06.16 — 23:05 |
(6) файл можно создать и на сервере. Просто надо создавать его на дисках и в папках, которые существуют на сервере |
||
Лефмихалыч
8 — 10.06.16 — 23:06 |
+(7) даже — не просто существуют, а еще и права на запись в них должны быть у пользователя, под которым запущена служба сервера приложений (ragent) |
||
SFilchakov
9 — 10.06.16 — 23:15 |
А где этого пользователя можно посмотреть? |
||
Стальная Крыса 10 — 11.06.16 — 04:18 |
На том компьютере, где работает сервер 1С |
TurboConf — расширение возможностей Конфигуратора 1С |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Я пишу веб-приложение с использованием MVC3, но при попытке передать объект контроллеру и показать его, похоже, он не распознает тип или что-то еще.
У меня есть объект Job, a JobService
возвращает a Job
следующим образом:
public Job View(int jobId)
{
Job job=_jobRepository.Jobs.Where(x => x.Id == jobId).FirstOrDefault();
return job;
}
В WebService я вызываю View следующим образом:
[WebMethod]
public Job GetJob(GetJobRequest getJobRequest)
{
var getJobResponse = new GetJobResponse();
getJobResponse.Job = _jobService.View(getJobRequest.Id);
return getJobResponse.Job;
}
Затем контроллер вызывает это:
public class JobsController : Controller
{
public ActionResult Index()
{
var jobModel = new JobModel();
using (var webServiceSoapClient = new WebServiceSoapClient())
{
var getJobRequest = new GetJobRequest();
getJobRequest.Id = 26038;
jobModel.Job = webServiceSoapClient.GetJob(getJobRequest);
}
return View(jobModel);
}
}
И он бросает эту ошибку:
System.Web.Services.Protocols.SoapException: сервер не смог обработать запрос. — > System.InvalidOperationException: произошла ошибка генерации XML-документа. — > System.InvalidOperationException: Тип System.Data.Entity.DynamicProxies.Job_55765AEC3BD02AFD7E0527408ED5746E1054965A59B82A127B5A688C19C61D5B не ожидался. Используйте атрибут XmlInclude или SoapInclude, чтобы указать типы, которые не известны статически. в Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_Job (String n, String ns, Job o, Boolean isNullable, Boolean needType) в Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write18_GetJobResponse (Object [] p) в Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer13.Serialize(Object objectToSerialize, XmlSerializationWriter writer) в System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces пространства имен, String encodingStyle, String id) — Конец внутренней проверки стека исключений — в System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces пространства имен, String encodingStyle, String id) в System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object [] returnValues, Stream outputStream) в System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object [] returnValues) в System.Web.Services.Protocols.WebServiceHandler.Invoke() — Конец внутренней трассировки стека исключений —
Сначала я передавал GetJobResponse
службе, но я попытался сделать ее как можно более простой, чтобы заставить ее работать, и я все еще не могу понять это. Я видел, что есть другие вопросы, предлагающие использование XmlInclude и прочее, но это все еще не работает.
Применяя это:
public string SerializeObjectToXMLString(object theObject)
{
// Exceptions are handled by the caller
using (System.IO.MemoryStream oStream = new System.IO.MemoryStream())
{
System.Xml.Serialization.XmlSerializer oSerializer = new System.Xml.Serialization.XmlSerializer(theObject.GetType());
oSerializer.Serialize(oStream, theObject);
return Encoding.Default.GetString(oStream.ToArray());
}
}
К заданию, возвращенному View в тесте, проходит тест, поэтому я думаю, что проблема исходит из моего веб-сервиса.
Пожалуйста, помогите meeee: ‘(