Ваш контроллер ожидает currentStateDatas
как string
, но в вашем js-коде это объект, вы также должны преобразовать currentStateDatas
в строку, используя JSON.stringify.
$.ajax({
url: "@Url.Action("SaveTempReport", "Report")",
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ "categoryIds": categoryIds,
"reportName": reportName,
"Description": description,
"tempReportId": tempReportId,
"chartState": JSON.stringify(currentStateDatas),
"deparmentIds": deparmentIds}),
success: function (response) {
}
});
PowerShell (Двигатель) работает под .NET 4.0. PowerShell (хост консоли и ISE не просто, просто потому, что они были скомпилированы против более старых версий .NET. Существует настройка реестра, которая будет изменять системный режим .NET SystemyWide , который в свою очередь, позволяет PowerShell использовать классы .NET 4.0:
reg add hklm\software\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1
reg add hklm\software\wow6432node\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1
Чтобы обновить просто ISE для использования .NET 4.0, вы можете изменить Конфигурация ($ pshome \ powershell_ise.exe.config), чтобы иметь такое кусок:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
</configuration>
, вы можете построить приложения .NET 4.0, которые вызывают PowerShell, используя API PowerShell (System.Management.automation.PowerShell) просто хорошо, но Эти шаги помогут получить место в поле PowerShell для работы под .NET 4.0.
Снимите ключи реестра, когда вам больше не нуждаются. Это машинные клавиши и насильственно мигрируют все приложения в .NET 4.0, даже приложения, используя .NET 2 и .NET 3.5
Просто выполните powershell.exe с COMPLUS_version
набор переменной среды к v4.0.30319
. Например, из cmd.exe или .bat-файла:
set COMPLUS_version=v4.0.30319
powershell -file c:\scripts\test.ps1
Вот содержимое конфигурационного файла, который я использовал для поддержки сборок .NET 2.0 и .NET 4:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- http://msdn.microsoft.com/en-us/library/w4atty68.aspx -->
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
Также вот упрощенная версия кода PowerShell 1. 0 совместимого кода, который я использовал для выполнения наших сценариев из переданных аргументов командной строки:
class Program {
static void Main( string[] args ) {
Console.WriteLine( ".NET " + Environment.Version );
string script = "& " + string.Join( " ", args );
Console.WriteLine( script );
Console.WriteLine( );
// Simple host that sends output to System.Console
PSHost host = new ConsoleHost( this );
Runspace runspace = RunspaceFactory.CreateRunspace( host );
Pipeline pipeline = runspace.CreatePipeline( );
pipeline.Commands.AddScript( script );
try {
runspace.Open( );
IEnumerable<PSObject> output = pipeline.Invoke( );
runspace.Close( );
// ...
}
catch( RuntimeException ex ) {
string psLine = ex.ErrorRecord.InvocationInfo.PositionMessage;
Console.WriteLine( "error : {0}: {1}{2}", ex.GetType( ), ex.Message, psLine );
ExitCode = -1;
}
}
}
В дополнение к основной обработке ошибок, показанной выше, мы также вводим в сценарий оператор trap
для отображения дополнительной диагностической информации (аналогично функции Resolve-Error Джеффри Сновера).
В качестве еще одного варианта последний выпуск PoshConsole включает двоичные файлы, предназначенные для .NET 4 RC (которые работают штраф против версии RTM) без какой-либо конфигурации.
Пожалуйста, будьте ОЧЕНЬ осторожны с использованием подхода с ключами реестра. Это общемашинные ключи, и они принудительно переносят ВСЕ приложения на .NET 4.0.
Многие продукты не работают при принудительной миграции, и это средство тестирования, а не механизм обеспечения качества производства. Visual Studio 2008 и 2010, MSBuild, turbotax, множество веб-сайтов, SharePoint и так далее не должны быть автоматически мигрированы.
Если вам необходимо использовать PowerShell с 4.0, это должно быть сделано на основе каждого приложения с помощью конфигурационного файла, точные рекомендации следует уточнить у команды PowerShell. Это может привести к поломке некоторых существующих команд PowerShell.