【发布时间】:2017-04-23 16:34:39
【问题描述】:
在我的页面中,我需要按名称、类型和 LastModified 搜索容器和 blob
var selectedValue = ddlFileType.SelectedValue;
AzureSettings container = AzureSettingsServices.Select(selectedValue.ParseInt(-1));
if (ViewState[container.Name] == null)
{
IEnumerable<IListBlobItem> blobList = BlobHelper.GetFileListByContainer(container.Name);
//I add the viewstate for not spending money in azure :)
ViewState.Add(container.Name, blobList);
}
List<CloudBlob> list = null;
string fileName = txtFileName.Text;
if (!string.IsNullOrWhiteSpace(fileName))
{
//by name and date
list = ((IEnumerable<IListBlobItem>)ViewState[container.Name]).OfType<CloudBlob>().Where(x => x.Name == fileName && x.Properties.LastModified >= dtDate.ValueRange.StartDate && x.Properties.LastModified <= dtDate.ValueRange.EndDate ).ToList();
}
else if (string.IsNullOrWhiteSpace(fileName))
{
//by date
list = ((IEnumerable<IListBlobItem>)ViewState[container.Name]).OfType<CloudBlob>().Where(x => x.Properties.LastModified >= dtDate.ValueRange.StartDate && x.Properties.LastModified <= dtDate.ValueRange.EndDate ).ToList();
}
if (list != null)
{
// by type
list=list.OfType<CloudBlob>().Where(x => x.Name.Contains(selectedValue)).ToList();
SelectedContainer = container.Name;
grdFiles.DataSource = list;
grdFiles.DataBind();
}
问题是我不能将 List 列表作为 gridview 数据源,这是正常的,但是如何将 List 列表设置为 ( IEnumerable bloblist 或在我的视图状态中(注意:在我的视图状态中是我的 Ilistblobitem 列表)) 返回我的 gridview 数据源
更新错误 2:
grdFiles.DataSource = ((IEnumerable)ViewState[container.Name]);
grdFiles.DataBind();
这里是关于的错误,
'Microsoft.WindowsAzure.Storage,版本=7.2.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35''Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility+d__0`1[[Microsoft.WindowsAzure.Storage.Blob. IListBlobItem,Microsoft.WindowsAzure.Storage,版本=7.2.1.0,文化=中性,PublicKeyToken=31bf3856ad364e35]]'
> [SerializationException: 'Microsoft.WindowsAzure.Storage, Version=7.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' Derlemesindeki 'Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility+<LazyEnumerable>d__0`1[[Microsoft.WindowsAzure.Storage.Blob.IListBlobItem, Microsoft.WindowsAzure.Storage, Version=7.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]' ]
System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType 类型) +12207601 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(类型类型,StreamingContext 上下文)+230 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() +143
System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter,SerializationBinder binder)+178 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter,SerializationBinder binder)+51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +540 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) +131 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(流序列化流,对象图)+17 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +3046
[ArgumentException: 'Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility+d__0
1[[Microsoft.WindowsAzure.Storage.Blob.IListBlobItem, Microsoft.WindowsAzure.Storage, Version=7.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]' türündeki 'Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility+<LazyEnumerable>d__01[Microsoft.WindowsAzure.Storage.Blob.IListBlobItem]' değerini seri hale getirme hatası.] System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +3770 System.Web.UI.ObjectStateFormatter.Serialize(流输出流,对象状态图)+144 System.Web.UI.ObjectStateFormatter.Serialize(对象状态图,目的)+71 System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Serialize(对象状态)+39 System.Web.UI.Util.SerializeWithAssert(IStateFormatter 格式化程序,对象状态图)+37 System.Web.UI.Control.EstimateStateSize(对象状态)+45 System.Web.UI.Control.BuildProfileTree(字符串 parentId,布尔 calcViewState)+71 System.Web.UI.Page.BuildPageProfileTree(Boolean enableViewState) +42 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5761
【问题讨论】:
-
我发现错误,IEnumerable
无法添加到视图状态
标签: linq azure azure-blob-storage oftype