vbali blogja

just a geek with a blog

Mono kompatibilitás

Egy újabb Mono-s bugba sikerült belefutnom. A CustomValidator-okat pofátlanul figyelmen kívül hagyja de ami a leginkább bosszant a dologban, hogy ez a korábbi verziókban működött! Az 1.2.3-as verziónál tapasztaltam a jelenséget de először arra gondoltam, hogy én ejtettem valami hibát a programomban. Módosítás nélkül átvittem a kódot egy MS.NET-es gépre és hiba nélkül működött.

CustomValidator
1
2
<asp:customvalidator onservervalidate="ValidateDuration" errormessage="A ráfordítási idő nem lett kiválasztva" display="Dynamic" runat="server" id="CustomValidator1"></asp:customvalidator>
<asp:dropdownlist id="ddlDuration" runat="server"></asp:dropdownlist>
Az eseménykezelő rész
1
2
3
4
5
6
7
protected void ValidateDuration (object sender, ServerValidateEventArgs e)
{
  if (ddlDuration.SelectedValue == "0")
      e.IsValid = false;
  else
      e.IsValid = true;
  }

Gondoltam, hogy akkor gyorsan feldobok a tesztrendszerben egy 1.2.4-es verziót, hátha ott már javították, de ekkor jött az arconcsúszás, mert az új verzióval mégtöbb hiba jött elő. Nem találja - egészen pontosan rossz helyen keresi - a saját kontroljaimat, mert a korábban tökéletesen működő (Windows-on most is kifogástalan) URL kezelő eljárásom hibás URL-t ad vissza és mindig téveszt egy szintet a könyvtárstruktúrában.

Nagyon óvatosan arra következtetek, hogy production környezetbe még mindig nem való a Mono - ASP.NET páros, mert az ilyen bugokat nem lehet tolerálni. Egyébként Gentoo-val teszteltünk, de a kolléga visszajelzése alapján Ubuntu-val is jelentkezett a hiba! Most jöhet a downgrade 1.2.2-re, ahol még minden hibátlan volt (vagy a Mono forráskód túrása, de nem vagyok mazochista ;-) ).