это должно работать:
для чисел, строк, даты и т. Д. :
public static void MyMethod(object obj)
{
if (typeof(IDictionary).IsAssignableFrom(obj.GetType()))
{
IDictionary idict = (IDictionary)obj;
Dictionary<string, string> newDict = new Dictionary<string, string>();
foreach (object key in idict.Keys)
{
newDict.Add(key.ToString(), idict[key].ToString());
}
}
else
{
// My object is not a dictionary
}
}
, если ваш словарь также содержит некоторые другие объекты:
public static void MyMethod(object obj)
{
if (typeof(IDictionary).IsAssignableFrom(obj.GetType()))
{
IDictionary idict = (IDictionary)obj;
Dictionary<string, string> newDict = new Dictionary<string, string>();
foreach (object key in idict.Keys)
{
newDict.Add(objToString(key), objToString(idict[key]));
}
}
else
{
// My object is not a dictionary
}
}
private static string objToString(object obj)
{
string str = "";
if (obj.GetType().FullName == "System.String")
{
str = (string)obj;
}
else if (obj.GetType().FullName == "test.Testclass")
{
TestClass c = (TestClass)obj;
str = c.Info;
}
return str;
}
Вам просто нужно увеличить время ожидания скрипта для выполнения страниц. По умолчанию это 90 секунд, поэтому, если вам нужно больше времени, измените его в следующем элементе system.web (атрибут executionTimeout):
<httpRuntime executionTimeout="seconds"
maxRequestLength="kbytes"
minFreeThreads="numberOfThreads"
minLocalRequestFreeThreads="numberOfThreads"
appRequestQueueLimit="numberOfRequests"
useFullyQualifiedRedirectUrl="true|false" />
Вы можете установить максимальное . продолжительность для запросов в web.config:
<system.web>
...
<httpRuntime executionTimeout="600" />
Где ExecutionTimeout указывает максимальное количество секунд, в течение которых запрос может выполняться, прежде чем он будет автоматически завершен ASP.NET. Подробности можно найти здесь .