Quebra-cabeça com a compilação de default.aspx.cs no Ubuntu 16.04 com falha em http://127.0.0.1/default.aspx

0

Eu gostaria de saber por que a compilação de default.aspx.cs no Ubuntu Linux 16.04 com um código apontando para default.aspx.cs falha quando eu insiro http://127.0.0.1/default.aspx no navegador da web . Além disso, há um arquivo default.aspx.designer.cs em MyLinuxTest.csproj, que é gerado automaticamente pelo Visual Studio e age como um scaffold para o código que é gravado nos arquivos asps e asp.cs. Como estes são gerados automaticamente, nunca se deve tocar ou alterar este arquivo.

Eu li hoje em www.monoproject.com FAQ que o default.aspx.cs é sempre compilado. Alguns dias atrás eu li que o default.aspx.cs é compilado apenas uma vez quando ele é alterado. Eu li também há uma opção de script do lado do servidor aspx CompilationMode, sempre, automático e nunca. Qual é o comportamento de compilação correto para o processo mod_mono_server4? Por favor, corrija meu uso da terminologia.

Aqui está o que eu fiz ontem. Por causa da regra C # que diz que as classes que começam com @ só podem ser seguidas por uma palavra-chave C #. Como resultado, a compilação falhou mesmo com o MonoDevelop Xamarin Studio 5.5 quando usei uma classe C # chamada @default . Para corrigir esse erro, fui instruído a alterar o nome da classe @default para abcdef em dois locais, default.aspx e default.aspx.designer.cs.

Quando terminei essas alterações, criei o MyLinuxTest.csproj usando o MonoDevelop Tamarin Studio 5.5 e gerou um MyLinuxTest.dll, que testei com o navegador Run With Firefox para iniciar o xsp4 e ele funcionou corretamente neste momento.

Em seguida copiei MyLinuxTest.dll e MyLinuxTest.dll.mdb para a pasta bin do nosso ambiente de produção. [EDIT Eu li no documento mono-project.com FAQ hoje que esses arquivos precisam ser instalados usando rm MyLinuxTest.dll seguido por cp /home/frankc/Downloads/MyLinuxTest/MyLinuxTest/bin/MyLinuxTest*.* ..

Neste momento, Quando usei meu navegador da Web Chrome e o mod_mono_server4 do apache2, como este http://127.0.0.1/default.aspx, obtive o erro do compilador C # temporário, o aspx.cs não pôde ser compilado porque havia um ASP método de classe default_aspx já definido. Como eu poderia corrigir este erro de compilador c # desconcertante para que http://127.0.0.1/default.aspx fornece o conteúdo da Web correto? Eu posso fornecer o código do ASP.NET, se solicitado. Deve default.aspx e default.aspx.cs ser renomeado para Default.aspx e Defalt.aspx.cs, que eu usei com sucesso no HelloWorld.csproj? Além disso, o que devo fazer para recuperar ou remover default.aspx.designer.cs do processo de compilação?

    
por Frank 18.06.2016 / 22:23

1 resposta

0

Depois de tentar a sugestão do @svick para alterar o nome da minha classe de @default para @normalName, ainda recebi a seguinte mensagem de erro e rastreamento de pilha:

Detalhes: Não é possível encontrar o tipo MyLinuxTest. @ normalName

Origem do erro: analisador

Error source file: /var/www/firstaspnet/default.aspx
Exception stack trace:
  at System.Web.UI.BaseParser.ThrowParseException (System.String message, System.Object[] parms) <0x40c61680 + 0x00087> in <filename unknown>:0 
  at System.Web.UI.TemplateParser.SetBaseType (System.String type) <0x40c555c0 + 0x000cf> in <filename unknown>:0 
  at System.Web.UI.TemplateParser.ProcessMainAttributes (IDictionary atts) <0x40c5fa40 + 0x00bbf> in <filename unknown>:0 
  at System.Web.UI.TemplateControlParser.ProcessMainAttributes (IDictionary atts) <0x40c5ea50 + 0x00423> in <filename unknown>:0 
  at System.Web.UI.PageParser.ProcessMainAttributes (IDictionary atts) <0x40c5be30 + 0x02773> in <filename unknown>:0 
  at System.Web.UI.TemplateParser.AddDirective (System.String directive, IDictionary atts) <0x40c5b720 + 0x0019a> in <filename unknown>:0 
  at System.Web.UI.TemplateControlParser.AddDirective (System.String directive, IDictionary atts) <0x40c5b190 + 0x00523> in <filename unknown>:0 
  at System.Web.UI.PageParser.AddDirective (System.String directive, IDictionary atts) <0x40c5acb0 + 0x0046f> in <filename unknown>:0 
  at System.Web.Compilation.AspGenerator.GetInheritedType (System.String fileContents, System.String filename) <0x40c58000 + 0x003fd> in <filename unknown>:0 
  at System.Web.Compilation.AspGenerator.GetRootBuilderType (System.IO.Stream inputStream, System.String filename) <0x40c574a0 + 0x000bf> in <filename unknown>:0 
  at System.Web.Compilation.AspGenerator.CreateRootBuilder (System.IO.Stream inputStream, System.String filename) <0x40c572b0 + 0x0003b> in <filename unknown>:0 
  at System.Web.Compilation.AspGenerator.InitParser (System.IO.TextReader reader, System.String filename) <0x40c56760 + 0x00353> in <filename unknown>:0 
  at System.Web.Compilation.AspGenerator.Parse (System.IO.TextReader reader, System.String filename, Boolean doInitParser) <0x40c56360 + 0x00063> in <filename unknown>:0 
  at System.Web.Compilation.GenericBuildProvider'1[TParser].Parse () <0x40c4fbb0 + 0x000c3> in <filename unknown>:0 
  at System.Web.Compilation.GenericBuildProvider'1[TParser].GenerateCode () <0x40c4fae0 + 0x00016> in <filename unknown>:0 
  at System.Web.Compilation.GenericBuildProvider'1[TParser].GenerateCode (System.Web.Compilation.AssemblyBuilder assemblyBuilder) <0x40c4f8d0 + 0x0004c> in <filename unknown>:0 
  at System.Web.Compilation.BuildManager.GenerateAssembly (System.Web.Compilation.AssemblyBuilder abuilder, System.Web.Compilation.BuildProviderGroup group, System.Web.VirtualPath vp, Boolean debug) <0x40c4ecf0 + 0x002da> in <filename unknown>:0 

Descobri que a maneira de consertar meu problema era 1) reinstalar todos os meus pacotes apache2, Mono e ASP.NET na ordem correta 2) alterar o nome da minha classe de @default para abc.

É importante instalar o pacote apache2 primeiro. Além disso, é necessário instalar o sudo apt-get install mono-apache-server4 antes do sudo apt-get instalar o libapache2-mod-mono porque o pacote mono-apache- server4 é um pré-requisito do pacote libapache2-mod-mono.

    
por 20.06.2016 / 08:01