У меня была эта проблема, и я вырывал на нее волосы.У меня есть следующая ошибка:
Сведения об исключении: System.NotSupportedException: не удается сериализовать член HannaPrintsDataAccess.Customer.CustomerAddresses типа System.Collections.Generic.IList`1 [[HannaPrintsDataAccess.CustomerRataDataDressDress,= 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]], поскольку он является интерфейсом.
Ошибка источника:
Строка 196: Customer customer = OperationsManager.Instance.CustomerService.GetCustomer (7);Строка 197: Строка 198: строка xml = OperationsManager.Instance.CustomerService.GetCustomerAddressesXml (CustomerAddress.FindAll ());Строка 199: Строка 200: Порядок заказа = OperationsManager.Instance.OrderService.CreateOrderFromCart (xml);
Исходный файл: c: \ HostingSpaces \ greetwus \ galadavetiye.com \ wwwroot \ HannaPrints \ HannaPrints \ WebUI \ CreateGreetingC.aspx.cs Строка: 198
Трассировка стека:
[NotSupportedException: невозможно сериализовать член HannaPrintsDataAccess.Customer.CustomerAddress типа System.Collections.Generic.IList`1 [[HannaPrintsDataAccess.ataDataAccess.ataDataAccess.ataPort, Версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = null]], потому что это интерфейс.]
[InvalidOperationException: Невозможно сериализовать член 'HannaPrintsDataAccess.Customer.CustomerAddresses' типа 'System.Collections.Generic..IList`1 [[HannaPrintsDataAccess.CustomerAddress, HannaPrintsDataAccess, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]] ', подробности см. Во внутреннем исключении.] System.Xml.Serialization.StructModel.CheckSupportedMember (TypeDesc,Член MemberInfo, тип Тип) +889917 System.Xml.Serialization.StructModel.GetPropertyModel (PropertyInfo propertyInfo) +132 ........
Я изменил все свои IList на List, чтобы посмотреть, будет ли это что-нибудь делать, ноНа самом деле, после внесения этих изменений загрузка даже не заняла ни секунды, я предполагаю, что ошибка происходит еще до того, как она попадает в эту часть.Я проверил свои удаленные файлы, чтобы убедиться, что он загружался правильно, и это было.
Вот код:
using System;
using System.Collections.Generic;
using Castle.ActiveRecord;
namespace HannaPrintsDataAccess {
public partial class Customer {
private IList _customerAddresses;
public CustomerAddress GetPrimaryCustomerAddress()
{
foreach (CustomerAddress address in _customerAddresses)
{
if (address.IsPrimary)
return address;
}
return null;
}
[HasMany(typeof(CustomerAddress), ColumnKey = "CustomerId", Table = "Customer")]
public virtual IList<CustomerAddress> CustomerAddresses
{
get
{
return this._customerAddresses;
}
set
{
this._customerAddresses = value;
}
}
}
}
Ошибка происходит, когда этот код активирован:
protected void orderButton_Click(object sender, EventArgs e)
{
Customer customer = OperationsManager.Instance.CustomerService.GetCustomer(7);
string xml = OperationsManager.Instance.CustomerService.GetCustomerAddressesXml(CustomerAddress.FindAll());
Order order = OperationsManager.Instance.OrderService.CreateOrderFromCart(xml);
OperationsManager.Instance.CartService.MoveCart("MyDesigns");
Response.Redirect("~/Customer/PayByCreditCard.aspx?orderGuid=" + order.OrderGuid);
}
Класс CustomerAddress:
using System.IO;
using System.Xml.Serialization;
using Castle.ActiveRecord;
namespace HannaPrintsDataAccess
{
public partial class CustomerAddress
{
public string ToXml()
{
XmlSerializer serializer = new XmlSerializer(GetType());
MemoryStream memoryStream = new MemoryStream();
serializer.Serialize(memoryStream, this);
memoryStream.Seek(0, SeekOrigin.Begin);
return new StreamReader(memoryStream).ReadToEnd();
}
[BelongsTo("CustomerId")]
public virtual Customer Customer { get; set; }
}
}