Oct 16, 2015, 6:32 PM
[SOLVED] Does Coolite 0.8.0.30406 support .Net Framework 4 ?
Hi guys,
I wrote a big line of business application with a lot of forms around 4 years ago using Coolite 0.8.X, since then I've been maintaining this application under the .net framework version 3.5
A long time has passed and now I migrated this application to .Net 4.0 (it's still referencing Coolite.Ext.Web.dll 0.8.0.30406, Coolite.Utilities.dll
1.0.0.27253 and Newtonsoft.Json.dll 3.5.0.0. In my development machine (Visual Studio 2012) the application works as expected but it's showing problems when deployed to the IIS 7 (.Net 4.0 classic application pool).
The first page of my application is a coolite login page that's returning 404 Not Found (screenshot NotFound.png). Below is the web.config file of my app and the problematic login.aspx page:
web.config
Thanks for any help!
Marcos Hass Wakamatsu
I wrote a big line of business application with a lot of forms around 4 years ago using Coolite 0.8.X, since then I've been maintaining this application under the .net framework version 3.5
A long time has passed and now I migrated this application to .Net 4.0 (it's still referencing Coolite.Ext.Web.dll 0.8.0.30406, Coolite.Utilities.dll
1.0.0.27253 and Newtonsoft.Json.dll 3.5.0.0. In my development machine (Visual Studio 2012) the application works as expected but it's showing problems when deployed to the IIS 7 (.Net 4.0 classic application pool).
The first page of my application is a coolite login page that's returning 404 Not Found (screenshot NotFound.png). Below is the web.config file of my app and the problematic login.aspx page:
web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="backupConfigGroup">
<section name="backupConfig" type="Mirasoft.Configuration.BackupConfigSection" allowLocation="true" allowDefinition="Everywhere" />
</sectionGroup>
<section name="coolite" type="Coolite.Ext.Web.GlobalConfig" />
<sectionGroup name="businessObjects">
<sectionGroup name="crystalReports">
<section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null" />
</sectionGroup>
</sectionGroup>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<coolite cleanResourceUrl="true" gzip="true" scriptAdapter="Ext" scriptMode="Release" />
<appSettings>
<add key="CrystalImageCleaner-AutoStart" value="true" />
<add key="CrystalImageCleaner-Sleep" value="60000" />
<add key="CrystalImageCleaner-Age" value="120000" />
</appSettings>
<connectionStrings>
<add name="XXXX" connectionString="Data Source=XXX.XXX.XXX.XXX\DEBUG;Initial Catalog=XXX;Persist Security Info=True;User ID=XXXX;Password=XXXX" providerName="System.Data.SqlClient" />
</connectionStrings>
<backupConfigGroup>
<backupConfig folder="XXXX"
connectionString="XXXX"
backupSharedFolder="XXXX"
backupFileName="XXXX"
compressSharedFolder="XXXX"
compressedFileName="XXXX.zip"
encryptSharedFolder="XXXXX"
encryptedFileName="XXXX"
encryptionKey="XXXX" />
</backupConfigGroup>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="XXXXX@gmail.com">
<network host="smtp.gmail.com" password="XXXX" port="587" defaultCredentials="false" userName="XXXX" />
</smtp>
</mailSettings>
</system.net>
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog" />
<!-- Uncomment the below section to write to the Application Event Log -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter" />
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<system.web>
<!--
Set compilation debug="true" to insert debugging
symbols into the compiled page. Because this
affects performance, set this value to true only
during development.
Visual Basic options:
Set strict="true" to disallow all data type conversions
where data loss can occur.
Set explicit="true" to force declaration of all variables.
-->
<httpRuntime executionTimeout="3600" />
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0">
<assemblies>
<add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />
<add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />
<add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />
<add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
<add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
<add assembly="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
<buildProviders>
<add extension=".edmx" type="System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider" />
<add extension=".rpt" type="CrystalDecisions.Web.Compilation.RptBuildProvider, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
</buildProviders>
</compilation>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
<namespaces>
<clear />
<add namespace="System" />
<add namespace="System.Collections" />
<add namespace="System.Collections.Generic" />
<add namespace="System.Collections.Specialized" />
<add namespace="System.Configuration" />
<add namespace="System.Text" />
<add namespace="System.Text.RegularExpressions" />
<add namespace="System.Linq" />
<add namespace="System.Xml.Linq" />
<add namespace="System.Web" />
<add namespace="System.Web.Caching" />
<add namespace="System.Web.SessionState" />
<add namespace="System.Web.Security" />
<add namespace="System.Web.Profile" />
<add namespace="System.Web.UI" />
<add namespace="System.Web.UI.WebControls" />
<add namespace="System.Web.UI.WebControls.WebParts" />
<add namespace="System.Web.UI.HtmlControls" />
</namespaces>
</pages>
<!--
The <authentication> section enables configuration
of the security authentication mode used by
ASP.NET to identify an incoming user.
<authentication mode="Windows"/>
The <customErrors> section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
<authentication mode="Forms">
<forms cookieless="AutoDetect" loginUrl="~/login.aspx" name="SEGURANCAFORMAUTH" timeout="30" />
</authentication>
<membership defaultProvider="MiraMembershipProvider" userIsOnlineTimeWindow="60">
<providers>
<add applicationName="/XXXX" connectionStringName="XXXX" enablePasswordReset="false" enablePasswordRetrieval="true" maxInvalidPasswordAttempts="3" minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="0" name="MiraMembershipProvider" passwordAttemptWindow="0" passwordFormat="Clear" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" type="LibAuditorOnline.Mirasoft.Membership.MiraMembershipProvider" />
</providers>
</membership>
<!--
The <customErrors> section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
<httpHandlers>
<add path="*/coolite.axd" verb="*" type="Coolite.Ext.Web.ResourceManager" validate="false" />
<add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
</httpHandlers>
<httpModules>
<add name="AjaxRequestModule" type="Coolite.Ext.Web.AjaxRequestModule, Coolite.Ext.Web" />
<add name="SampleSqlInjectionScreeningModuleVB" type="Sample.SampleSqlInjectionScreeningModuleVB" />
</httpModules>
</system.web>
<location path="restricted">
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>
<!--
The system.webServer section is required for running ASP.NET AJAX under Internet
Information Services 7.0. It is not necessary for previous version of IIS.
-->
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode" />
</handlers>
</system.webServer>
<businessObjects>
<crystalReports>
<rptBuildProvider>
<add embedRptInResource="true" />
</rptBuildProvider>
</crystalReports>
</businessObjects>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
</configuration>
login.aspx<%@ Page Language="VB" AutoEventWireup="false" CodeFile="login.aspx.vb" Inherits="login" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<%@ Register Assembly="SegurancaControls" Namespace="ASP" TagPrefix="login" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Login :: Mirasoft WebDAE</title>
<script type="text/javascript">
function finaliza() {
var doc = parent.document;
if (doc != null) {
if (doc.title != '' && doc.title.indexOf('Login') == -1) {
//alert(doc.title);
parent.window.location = "login.aspx"; //retorna a tela de login.
}
}
}
function ValidaUsuario(nomeUsuario, senha) {
if (nomeUsuario == '') {
Ext.Msg.alert('Atenção', 'Verifique o nome do usuário!', function() { Ext.getCmp('txtNomeUsuario').focus(); });
return;
}
if (senha == '') {
Ext.Msg.alert('Atenção', 'Verifique a senha do usuário!', function() { Ext.getCmp('txtSenha').focus(); });
return;
}
/* Solicita a validação do usuário de acordo com o primeiro MembershipProvider
* encontrado no arquivo de configuração, este MembershipProvider por sua vez
* apontará para uma ConnectionString caso a validação esteja sendo realizada
* em um banco de dados.
*/
Coolite.AjaxMethods.ValidateUser(nomeUsuario, senha,
{
success: function(result) {
if (!result) {
Ext.Msg.alert('Atenção', 'Verifique o nome do usuário e senha!', function() { Ext.getCmp('txtNomeUsuario').focus(); });
}
}
, failure: function(result) {
Ext.Msg.alert('Atenção', 'Problemas na validação do usuário!');
}
});
}
</script>
</head>
<body onload="finaliza();" background="images/plano_login.png">
<ext:ScriptManager AjaxViewStateMode="Exclude" EnableViewState="false" ID="ScriptManager1"
runat="server" ScriptMode="Release" />
<ext:Window ID="Window1" runat="server" Title="Senha do usuário" Width="370" Height="230"
MinWidth="370" MinHeight="230" Closable="false" Resizable="false">
<TopBar>
<ext:Toolbar ID="Toolbar1" runat="server">
<Items>
<ext:ToolbarButton ID="btnAdd" runat="server" Icon="Key" Text="Acessar">
<Listeners>
<Click Handler="ValidaUsuario(#{txtNomeUsuario}.getValue(), #{txtSenha}.getValue());" />
</Listeners>
</ext:ToolbarButton>
</Items>
</ext:Toolbar>
</TopBar>
<Body>
<ext:AbsoluteLayout ID="AbsoluteLayout1" runat="server">
<ext:Label ID="Label1" runat="server" X="10" Y="15" Text="Usuário">
</ext:Label>
<ext:TextField ID="txtNomeUsuario" runat="server" X="10" Y="35" Width="330" StyleSpec="textTransform:uppercase;"
AllowBlank="false">
</ext:TextField>
<ext:Label ID="Label2" runat="server" X="10" Y="65" Text="Senha">
</ext:Label>
<ext:TextField ID="txtSenha" runat="server" X="10" Y="85" Width="330" InputType="Password"
AllowBlank="false">
</ext:TextField>
</ext:AbsoluteLayout>
</Body>
</ext:Window>
<%-- Enter Invoca a Function Valida Usuário --%>
<ext:KeyMap ID="KeyMap1" runat="server" Target="={Ext.isGecko ? Ext.getDoc() : Ext.getBody()}">
<ext:KeyBinding>
<Keys>
<ext:Key Code="Enter" />
</Keys>
<Listeners>
<Event Handler="ValidaUsuario(#{txtNomeUsuario}.getValue(), #{txtSenha}.getValue());" />
</Listeners>
</ext:KeyBinding>
</ext:KeyMap>
</body>
</html>
When I switch this application to a .Net 3.5 application pool the applications works as expected.Thanks for any help!
Marcos Hass Wakamatsu
Last edited by marcossoft; Oct 19, 2015 at 5:42 PM.