Система.InvalidOperationException: не удается создать временный класс (результат=1)
Я разработал приложение с использованием .net 3.5 и развернул его как an .exe на нескольких машинах с одной и той же средой.
Однако, на одной конкретной машине, я получаю следующую ошибку. Трассировка Стека:
см. конец этого сообщения для получения подробной информации о вызове
точно в срок (JIT) отладки вместо данного диалогового окна.
System.InvalidOperationException: Unable to generate a temporary class (result=1).
error CS2001: Source file 'C:WINDOWSTEMPwz58eig4.0.cs' could not be found
error CS2008: No inputs specified
at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
at System.Xml.Serialization.XmlSerializer.GetSerializersFromCache(XmlMapping[] mappings, Type type)
at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Type type)
at System.Web.Services.Protocols.SoapClientType..ctor(Type type)
at System.Web.Services.Protocols.SoapHttpClientProtocol..ctor()
at SSOClient..ctor()
at sc.tradesvc.SSOManager..ctor()
at sc.tradesvc.SSOManager.get_Inst()
at sc.cashflowgenerator.Controls.LoginForm.btnLogin_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.PerformClick()
at System.Windows.Forms.Form.ProcessDialogKey(Keys keyData)
at System.Windows.Forms.TextBoxBase.ProcessDialogKey(Keys keyData)
at System.Windows.Forms.Control.PreProcessMessage(Message& msg)
at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)
Загруженные Сборки:
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
CashflowGenerator
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/DATA/DEVEL/Output/CashflowGenerator.exe
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
System.Core
Assembly Version: 3.5.0.0
Win32 Version: 3.5.21022.8 built by: RTM
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
System.Web.Services
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Web.Services/2.0.0.0__b03f5f7f11d50a3a/System.Web.Services.dll
************** отладка JIT **************
К включить JIT-отладку точно в срок .конфигурационный файл для этого
приложение или компьютер (машина.config) должен иметь
значение jitDebugging, установленных в системе.окна.раздел формы.
Приложение также должно быть скомпилировано с включенной отладкой
включен.
например:
когда включена отладка JIT, любое необработанное исключение
будет отправлен в JIT-отладчик, зарегистрированный на компьютере
вместо того, чтобы быть обработанным этим диалогом коробка.
может кто-нибудь помочь мне с этим?
поскольку я новичок в .net, может ли кто-нибудь также сказать мне, когда в первую очередь нужно создать временный класс?
11 ответов:
сериализация XML работает путем генерации кода для выполнения сериализации. Это делается во временной сборке, созданной для этой цели при первой необходимости.
однако это зависит от возможности записи сборки на диск.1
ваши параметры либо (1), учитывая учетную запись пользователя, которая запускает разрешение на запись процесса (для ASP.NET применение это, вероятно, будет плохой идеей). (2) Используйте инструмент SDK (sgen.exe) для предварительной генерации (во время разработки/компиляции) сборки сериализации, а затем использовать (и истощить) эту сборку.
1открытый вопрос: API существуют для динамического создания сборок в памяти: почему бы не сделать это?
Я просто потратил много времени на поиск ответа на этот вопрос, поэтому я подумал, что добавлю его здесь, чтобы сэкономить головную боль для других. Если вы используете xsd.exe инструмент для создания вашего cs он может добавить двойные массивы [][] где массив должен быть []. Замените все [][] на [] в созданном файле cs и повторите попытку.
вам нужно только предоставить содержимое папки списка и разрешения на чтение в %windir%\Temp.
Я нашел это сообщение при попытке исправить мою проблему, и не нужно было давать моей учетной записи пользователя доступ на запись.
вам нужно дать разрешение на папку temp, которая находится в папке windows. И Ваша проблема решена...........
вам нужно добавить* IIS_IUSR * пользователь с разрешением на чтение записи в папку C:\Windows\Temp .
Примечание: каждый пользователь не будет работать с полным контролем.
комментарий @grzenio немного дальше для недавних пользователей:
Если вы перейдете в свойства проекта - > сборка - > создать сборку сериализации - > ВКЛ., он принудительно создает сборку сериализаторов XML во время компиляции, устраняя необходимость делать это во время выполнения.
в свою очередь, это означает, что вам не нужно изменять разрешения файловой системы (полезно, если вы, например, размещаете на веб-сайтах Windows Azure, где это не вариант).
это может быть также просто какая-то простая ошибка в сериализованном классе (обычно результат некоторого копирования/вставки). Например, следующий класс вызовет эту ошибку:
public class Foo { private string[] contexts; /// <remarks/> [System.Xml.Serialization.XmlArrayItemAttribute("Context", typeof(Property), IsNullable = false)] public string[] Contexts { get { return this.contexts; } set { this.contexts = value; } } }обратите внимание, что typeof на(собственность) параметр в атрибуте XmlArrayItem не совместим (скорее всего) со строкой, вызывающей подобное исключение:
System.InvalidOperationException: Unable to generate a temporary class (result=1).Если typeof на(собственность) заменяется typeof (string) сериализация будет работать снова.
API существуют для динамического создания сборок в памяти: почему бы не сделать это?
просто дикая догадка: я предполагаю, что эта возможность еще не существовала в .NET 1.0 или, по крайней мере, когда был создан XmlSerializer, и MS не любит изменять существующее поведение...
это может быть потому, что вы переключаете идентификатор пула приложений в
IISбыть паролем вместо предопределенного так что у вас есть один из следующих
- вернуться к стандартным
- дайте полный контроль prmission пользователю IWAM_WBSRV-01 в папке temp windows
в случае, если это кому-то поможет, моя проблема исходила из унаследованного класса, используемого в сериализации. Проблема исчезла, когда я сделал полную копию/вставку своего класса, который я сериализовал и прекратил использовать инерционность. К сожалению, преимущества наследования ушли, но это лучше, чем иметь эту проблему. (Эй, по крайней мере, я уверен, что это то, что решило его. Случилось сделать перезагрузку там тоже где-то.)
Comments