Introduction
Catharsis is a complete framework for developing web applications. The question is, has she (Catharsis) something essentially better than others, what could promote her to an everyday usage? Answer must come from you.
All source code can be found here.

Latest stories about Catharsis
Latest stories about the Catharsis framework you can find:
http://www.codeproject.com/KB/aspnet/catharsis_tutorial_01.aspx
David O'Sullivan will guide you through
- the Catharsis guidance installation;
- the Example observation
- and extending the Example with new stuff (entity and its infrastructure)
You will touch all the fundaments which Catharsis architecture provides. These pieces than allow you easy and fast own development and application extending.
Enjoy these new stories. Thanks David.
Current release: 1.2
Catharsis 1.2 - 9.6.2009: see below
ASP.NET MVC 1.0, NHibernate 2.1. BETA 1
MVC design pattern
After two month after first release I've realized, that there are still some gaps in the MVC design pattern understanding. If you would like to get another view on MVC, to see some comparison with MVP and that all in the world of ASP.NET MVC and mainly how it works in Catharsis framework Architecture - try to follow this link http://www.codeproject.com/KB/aspnet/AspNetMvcMvp.aspx. This description is intended as a support for Catharsis, not as an academic and only valid explanation...
Background
ASP.NET Web form pages are dead, or at least out of the date. Do you really know all of the 23 (or how many) page life-time events? And do You need all of them?
Even in Microsoft they realized, that ASP.NET need a big change and purification (in Greek 'purification' == 'Catharsis') The result is ASP.NET MVC, the lightweight of web-forms with everything you need and lot of new features, which can change your way of thinking about request and response (and url-routing is really a very small piece of that wonderful puzzle called MVC).
Among other problems in Microsoft world of web-forms, there is depression of the OOP programming, caused mainly with DataSets, DataTables, DataAdapters ...
How could you think in object, if DataTable generated by designer has thousands of rows of code, which you cannot change, but above all: you cannot derive from DataTable! is this an OBJECT? And did you ever tried to create lte’s say object called User with property CurrentRole and property collection Roles using DataTables? (DataSet with related tables? Magically connected by relations? No ability to use auto identity for inserting ...) Get out of here. Now.
NHiberante 2.0 (even 1.2) can correct your sad ideas, because of narrowing the OOP world. And maybe it also can improve your designing habits when working with relational-database. Inheritance, polymorphism ... and fancy lazy mode (it’s not OOP but how effective)
Well, we have ASP.NET MVC (today Preview 5) and NHibernate 2.0 (final) and lot of good practices known. The missing part is the pot, which will allow us mix it and prepare delicious meal for our users.
Catharsis features
I do believe, that this article will have many descendants. So, do not waste time and place and just briefly about Catharsis: She is the 'Web-Application Framework' gathering best-practices... based on ASP.NET MVC, NHibernate 2.0.
Catharsis has real multi-tier architecture, with a separating of concern as the framework essence.
- Entity contains only plain objects
- Data is handling Storage (DB)
- Business is responsible for rules
- MVC process user requests and communicate with business facades
Catharsis is strongly OOP! Using 1) inheritance as a key feature for code reuse and 2) polymorphisms as the only way to communicate among layers (objects are working with interfaces! without knowing who is implementing them)
Powerful features are:
- Roles with
CurrentRole property (user has roles but access is evaluated only against currently selected role).
- Users and Roles are objects managed in runtime (Roles should be fixed but users can be added, modified or deleted)
- Localization in the runtime (no
.resx) with ability to add new languages on the run!
AOP filters (authorization, work-flow navigation...).
For all of that Catharsis has a Guidance. Every needed piece of code you'll find on a http://www.codeplex.com/Catharsis.
Catharsis.Guidance
Guidance provides two type of tasks:
- Creates new solution with all needed libraries, assemblies and implemented infrastructure
- Generates new classes in a design mode - separately for every layer, or all of them (30 classes?) at once.
Guidance itself should be the target of an article (to create them took me lot of days of my life ... ). But their final stage is 'wunderbar' ...
Needed Prerequisites
Needed knowledge
Visual Studio (2008) - You need to have SP1! installed and VB.NET Support. Both these requirements are MUST. VB.NET has unique support for Linq to XML. When you'll see it, you will never use anything else to generate Word or Excel files directly from your web application!
MVC - I do expect that you are well oriented in ASP.NET MVC. Wonderful place to start is www.asp.net/mvc and you should have seen all videos from Scott Hanselman – not they are really cool, but first of all they are very clear and nice to understand.
Current version used in Catharsis is ASP.NET MVC 1.0
NHibernate – I do expect you are familiar with NHibernate 2.1 (BETA 1 - LinFu proxies). The nice place to start is www.nhibernate.org (or examining Catharsis code)
Needed SW packages
Before you can start using Cathrasis.Guidance you have to install:
- AspNetMVCBeta-setup.msi (without that, you cannot load Web project to VS)
- GuidanceAutomationExtensions.exe (the 'CIL' for any Guidance)
- -/+ GuidanceAutomationToolkitForVS2008.msi (if you want to change them)
And finally you can choose to install
Catharsis.Guidance as MSI (probably preferred way)
Catharsis.Guidance solution, Open it, click on a project Guidance, select register.

From the version 0.9.1 there is The 'ProjectBase' namespace instead of 'Catharsis'. The aim is clear - to quickly start to use Catharsis framework in your company ...
Finally I suggest you install provided SQL scripts (create tables and insert few objects) or restore backup. It will allow us run solution very quickly. Scripts are needed for new solution (they create infrastructural tables). If you are running example, then you should use backup
(Source codes and MSI are available here.)
Creating our first Solution
If you have installed all needed stuff, let's start with a new solution.
Open Visual Studio 2008 and select Create new project. In the menu you can see now item: Guidance, which contains one solution - Catharsis.
Name new solution like 'YourCompany.Product' for example and create it. On the wizard screen you can change some settings, important is connection string.
When you click finish, Catharsis.Guidance will create new solution with all needed layers, referenced libraries and needed classes to handle roles, users, localization ...
If you've created Database as mentioned above, and provided correct connection string in a setup of a new solution, you should be very near to a first run of your new Web application.
Select 'Firm.Product.Web' project as startup and Default.aspx is as startup page and press F5...
Catharsis is running
If everything went right, you should see the HomePage screen:

Web Controls
I have to say, that MVC native solution for web controls is not well designed. HtmlHelper as the extension method for creating anchors, inputs etc. is simply bad solution. I would like to give you another point of view: Take a look at this article,
Catharsis_part12.aspx
,and you'll see how easy it is to correctly manage web controls even in the MVC world
.NET
I’d like to point out one fundamental thing on Catharsis, which (when I went through all my articles) was not said. Firstly I do not accept everything what’s coming on the market (even open source one) until I do play with it and feel friendly. (The example of bad experience for me was ‘Linq to Entities’ which I was looking forward as a child).
The pillar of Catharsis, I must mention, is Microsoft .NET C# 3.5! From my point of view and experience the C# is at the moment leading OOP programming language. Anything you need is there and lot of features extends the ability of day to day coding.
The last missing thing in C# is multiple inheritances (but as I heard rumors it will be changed). Despite of that fact the Extensions methods at current version can do lot of useful job. And also LINQ itself as the part of .NET 3.5 brings tremendous simplification. I think that it must be written: MS C# .NET 3.5 is precious diamond! I am looking forward .NET 4.0 as a child …
In a next part we will examine the Homepage, and the built-in stuff.
Enjoy Catharsis.
Source code
History
Catharsis 1.2
- Serializable session - all items (entities and search objects) are Serializable (ready for web-farming)
- Prototype desing pattern in action (every IEntityFacade<T> provides CreateNew<T>() - you are managing entity incubator on one place)
- User
friendly List view allows opening detail/edit in a new window. Row
count per page adjustable for every entity on search screen.
- Pre-created skeleton for Unit Tests (use them!)
- Performance increase - lazy loading for Facades, Models, Daos - only when needed (Lazy Locator design pattern for Getters)
- Native support for MultiOption list in smart binder
- CodeLists abilities extended (using smallint and tinyint as ID)
- Web application automated Recovery when SQL server restarts
- AOP for logging tracks the Session size!
- More efficient and simplified ApplicationRole provider (same for external providers via CommonRoleProvider)
- DAO Methods for extending search criteria moved to extensions
- powerful unit tests structure for every entity
Catharsis 1.0.1
- New Smart WebControls providing OOP approach (no more HtmlHelper)
- Powerful ToDisplay() (culture dependent formating for decimals, int, datatime)
- Smart Binders (allowing to bind formated decimals, DateTimes etc.)
- Global.asax is the only place where to set suffix ".mvc" (or not set any in IIS 7)
- IE 8 compliant
- More precious setting in Menu.config
- Full support of ASP.NET WebControls meta:resourceKey localization
- large example
Catharsis 0.9.5 was released 10.12.2008
- Catharsis Architecture is fundamentally OOP
- Contains TreeView - (First) 100% MVC WebControl
- Provides direct built-in Export to Excel for every entity
- Navigation is managed in one simple Menu.Config xml file
- Menu.Config xml file (same as for navigation) provides Access-rights settings
- Guidance creates: Complete Web Solution on-one-click
- Guidance creates: Entity infrastructure at one run (Entity, Data, Business, Model, Controller, View, Test)
- Guidance creates: Entities can be common (Persistent) or Tracked
- Guidance creates: Entity's infrastructure without MVC at one run (Entity, Data, Business, Test)
- Guidance creates: CodeList infrastructure at one run (Entity, Data, Business, Model, Controller, View, Test)
- Guidance creates: MVC for not-entity handling e.g. Reports, Documentation (Model, Controller, View,)
- New extension methods for object .Is() and .IsNull() (no more 'entity != null')
- Messages collection introduced (replacing ErrorData) with Error, Warning and Information states
- Translator provides sorting on translated-phrases, also searching
- UI Layout improved (TreeView as navigation, Quick actions as Icons)
- Master page reorganized to parts and their smart but small web controls
- Strong support for KEY shortcuts (Almost every action can be ran as ShiftAltF = find/search)
- Paging is essence of performance - every entity is by default displayed as a list - max rows == 20
- Paging miracle on detail level. User's can navigate to Next or Previous entity
- CodeLists extended with IsVisible attribute, which is applied on the GetAll() method (source for comboboxes
- Direct built-in support for Files uploading (any Content-Type) and
quick download (based on contentType browser can decide who will open)
- Every entity Derives from base class: Add, Update, Select, Delete
- Entity displayed in the List can be sorted by any property (e.g. Subject.Address.City)
- Override one method ListToExcel() and you can gain direct export to excel for every entity
- Constants placed in Str class reorganized. Every entity should use Str.Business.Entity constants
- Base classes moved from project to the ProjectBase
- Base Models now contains other Models (Composition) e.g. TreeViewModel, ListModel, MasterModel ...
- Two controllers bases - Entity (for Persistent and Tracked entities) and Web (form MVC like Reports, Documentation)
- Interfaces for Controllers and Facades extended with setters for DI
- Object Factory rewritten to Factory provider method to allow simple addon like Spring.NET...
Enjoy Catharsis.
| You must Sign In to use this message board. |
|
|
 |
|
 |
Hi Radim, very interesting. Clearly shows how the Microsoft stuff is maturing. One question - is there an example site online somewhere? Ideally something that has some interactivity - a calendar or similar perhaps?
Thx++
Jerry
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Jerry,
Previous release on [http://Catharsis.codeplex.com/] contains powerful Example. ([http://catharsis.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26339])
Latest release is at this moment waiting for an Example.
But in fact:
1) Install Catharsis Guidance using ".msi" file 2) Create your own solution in VS 2008 using Guidance (e.g. Firm.Product) 3) Create DB, run provided SQL scripts and 4) Click F5
5) You have running example...
I suggest to you: do it! Until you see it, you won't believe it.
Enjoy Catharsis Radim Köhler
Competition is as important as Cooperation
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Radim, thanks. Is there anything live out there in cyberspace right now? I've got 30 seconds to check out a live site - no time right now to do an install I will, I hope, have the 15 minutes later this month
Thx++
Jerry
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
 |
|
|
 |
|
 |
Cool framework. Will try this out.
Thanks for the wonderful work.
Enjoy Life, Rajesh Pillai http://rajeshpillai.blogspot.com/ http://simply-url.blogspot.com/
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi, Rajesh Pillai
Thanks a lot for such a note. Yes, we are using it, we have already two application in production. Two new are in process.
But the feedback, you are giving is priceless. That's why we decided to make it OPEN SOURCE.
Have a nice day Enjoy Catharsis
Radim Köhler
Competition is as important as Cooperation
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
While I'm all for MVC and the Data Mapper pattern provided by NHibernate, to say that the DataAdapter, DataSet, etc. of ADO.NET are not object-oriented is incorrect. They may not be the best solution for every case, and Microsoft's implementation could be lacking (sealed classes), but they are still a valid design pattern for data access (see Martin Fowler's Patterns of Enterprise Application Architecture[^]). You really have to decide which pattern is best based on a case-by-case scenario. For instance, should you use the raw Data Mapper approach of NHibernate or add Castle.ActiveRecord to get instant mapping and CRUD functionality almost for free?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Ryan.Riley Thanks for your comment and opinion. I am really glad that you was not afraid to write it down, to allow reader to compare.
But I do not agree with you even in one of your sentences!!!
There is no scenario which allows any other then OOP approach. You can start to play, or better - to learn, with any piece of .NET framework. Yes there are DataTables, DataAdapters. There are even available large sessions, view-states, disconnected object data sources. You can even use XML Readers instead of the XML to Linq. And many many more...
But, Ryan.Riley, it simply does not mean, that you should or have to. In fact NO! you cannot! you have to avoid everything, which is for "your-current-case-needs" enough.
From my experience (I was working for few very large bank companies), there are plenty, hundreds (sometimes thousands) application, which were developed as you've described. They are NIGHTMARE for maintenance. Try to extend DataTable with new features ... to reuse existing and append some new. Impossible, unless you bring up new, another issues which will be the horror for your followers.
Simply, in one sentence:
OOP design and architecture can be extremely efficient if it is OOP! Any "my-Case-decision-to-break-the-rule" will cost you more then you can ever save.
But again, Thanks for your - another view. I do wish you to have experience with both (OOP appraoch and ad hoc one). I guess that your own experience is (or will be) simply priceless 
Have a nice days and Enjoy your .NET applications Radim Köhler
Competition is as important as Cooperation
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Radim Köhler wrote: But, Ryan.Riley, it simply does not mean, that you should or have to.
I don't disagree with you on this point. I was not saying I would want to use DataAdapters, DataSets, etc. I really don't like the .NET implementations, for reasons even beyond the ones you provided. My personal choice for working with data is NHibernate (or to be more precise, Fluent NHibernate). I like the Domain Model and Data Mapper patterns more than any other, but that doesn't mean that the DataSet, et. al. classes are not object oriented. That was really my only point.
Like you, I think those approaches generally lead to poor maintainability, though I would hasten to add that they are unmaintainable generally from the way they are used rather than because of the implementation. You can't fix poor architecture with different patterns; however, some patterns lend themselves to forcing developers to follow better patterns. I'd also blame those who build examples over the implementations themselves. Most examples using the DataAdapters, DataSets, etc. are generally just really bad design.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Ryan Riley
I simply have to append small answer. You obviously know what you are talking about. And that's fabulous! When we publish something (article or such a comprehensive message as you did) we should be more strict and sharp - in comparison with playing or learning. In fact, until developer can compare - he has only 'faith'. And that's probably worse then correct DataTable, DataAdapter etc. usage.
Thanks that you've spend some time and appended your experience and knowledge! Enjoy .NET coding (as I do
Thanks. Have a nice day. Radim Köhler
Competition is as important as Cooperation
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi,
I like the way, you implemented the project. Can you tell me more about the performance?
Regards,
Doss
Doss
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Dosss. The performance is really, really very high.
1) If your application has let's say 30 entities (15 CodeList and 15 others) Then the session per user is never higher then 250KB
2) We have currently two application deployed in production. Due to well- designed database (star schema fact-table + dimension talbes) we have response per paging and sorting on 1 milion rows about 2 seconds.
Any other operation (then list view) is atomic (edit or see detail or search) and preformance is mostly dependent on Net-traffic capabilities. IIS Has no problem at all.
3) NO-VIEW STATE! No control state! no data sources etc. simple, efficient and quick!
4) Even very complicated entities (binary files, texts with 1000 chars) has no troubles with performance. The list takes only needed column, and detail is atomic and very quick.
Have a nice day And DO Enjoy the good architecture Radim Köhler
Competition is as important as Cooperation
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hey,
I wish to use Catharsis on a website. The website should use Framework as part of diamonds system.
Can you please take a look at the website, it called Fancy Diamond and the system should use the .Net with the MVC at the system.
What can I do if i need to convert the DB from the old DB with whe Catharsis? 
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi TooShort Well, I did met a lot of SW requirements and worked with many frameworks. The Catharsis is built on this experience and therefore I can assure you - Catharsis, as architecture and framework can be use on any web-based project. Maybe you will need to change UI (My team helped me a lot to improve the current face, but for you it could not be enough) Maybe you'll extend some actions in BaseController, or BaseFacade (every entity can have GetByCode() etc.) That and many more is possible. But the core will be adjusted once. You can adjust Facades, Daos, TreeViews, AOP as you want. And you can be sure, that you'll be doing that only once - and then reuse it and reuse it .... Guidance are creating the skeleton - not implementing code --> that's upon you. And then you'll start to use it. And reuse it.
And the DB conversion? Currently we are working on conversions of existing applications (mostly VB or MS Access based) Sometimes we have to DO NOT touch the DataBase at all. And that is the reason why I can tell you:
DO NOT WORRY! Learn about NHibernate mapping! It will allow you to map your NEW entities (in your Catharsis-framework-based web application) to old DB structure. You will do it only in the hbm.xml files! Once! and then, on every upper layer you will use standard - without any exception - entity based approach. 100% OOP. We all should bless the NHibernate community. Unbelievable opportunities thanks their ORM tool
Enjoy Catharsis Radim Köhler
PS: If you'll once start to use ASP.NET MVC, .NET 3.5 and NHibernate ... you'll be smiling all the time on the Java, PHP etc. nervous collegues ... We are lucky guys
Competition is as important as Cooperation
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
AFAIK this won't be introduced, because this will open Hell Doors! Interfaces can be multiple inheritance, because they don't have any logic in it.
Imagine if you have this functionality and you extend 2 totally different objects, and they both have some logic in same functions. What would be a this class function result?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Laurts
Hell? Well, we all have two parents! Every human has inherited two types of totally different implemented informations (DNA) One from man other form woman. Is there a problem? (Do not worry - I am developer not a priest! 
Think in OOP, the base objects should implement their domain. Imagine Bus and TrolleyVehicle (e.g. base for Tram object) TrolleyVehicle implements ITrolley { void TakeElectricity() } Bus Implements IBus { void UseTires() }
Now, new vehicle will arrive into the system: Trolley-bus. Because you are afraid of Hell, you have to implement the code twice.
I (when multiple inheritance will come to real life) will just derive.
Sometimes is better then to be afraid - just think for a while. The more experience we have, the more we can act in OOP, the more we know, that OOP should help us to describe the real world. The REAL world. The Hell in fact, is two have one parent.
But, Laurts, you will still have the possibility to don't use multiple inheritance  Enjoy your approach Radim Köhler
Competition is as important as Cooperation
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Yes we have 2 parents, and we are not perfect
There is the classic diamond problem encountered in multiple inheritance, in which class D inherits from both B and C, which both inherit from A.
A / \ B C \ / D
So which copy of A does D get? The one from B, the one from C? Both? Multiple inheritance is also highly discouraged in languages where it is supported (C++ etc.). Multiple inheritance is confusing at best.
modified on Sunday, November 2, 2008 1:24 PM
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Laurts
Nice to see, how quickly you can produce 'bad' examples. I can provide same 'bad examples' for even much more simple things like bad html tags, css settings ...
The fact, that developers can produce bad code, is just the reality. I saw dozens of horrible .aspx pages. They were producing troubles in production. Does it mean that ASP.NET should be prohibited? I met singletons which in fact produced dead-locks. Should we prohibit multi-threads? Only because there is a risk, that some one can produce nonsense, we should forbid it?
What are EXTENSION methods? They exists? Can they produce the Diamond problem? YES! Will you suggest MS to forbid them!
If you are afraid of some technique, do no use it. But I do not understand why you wish to disable the usage at all... Enforce your team not to use it. Wrap third party code if needed.
Producing code in OOP language C# does not mean that the result is OOP. The more you think in OOP the more you need extension methods! Because, by the way, they provide the functionality of multiple inheritance. Did you already started methods like First(), Count(), SinlgeOrDefault() on ILists? ... 
But, Laurts, do not be afraid. The way which will (hopefully) implement the multiple inheritance in C# won't be the same as we are using now... It will be more closer to the Extension methods. And maybe you even won't mention it ...
Enjoy OOP as you like it Radim Köhler
Competition is as important as Cooperation
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Extension method can produce Diamond problem? This is first. Can you provide some code samples? Singelton is design pattern not a C# language feature.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
I have followed the download and install instructions for Catharsis. I have installed the Project.bak sql database. I have created a new Catharis solution.
I have set Default.aspx as my startup page.
But, I am getting runtime error "Session was disposed of or closed" on line 137 in GetListByCriteria.
Line 137 = searchObject.RowCount = (int)rowCount.SetProjection(Projections.RowCount()).UniqueResult();
See line 137 in NGenericDao.cs.
Any ideas what I am doing wrong?
Any help appreciated.
Regards,
Paul.
Paul Wade
|
| Sign In·View Thread·PermaLink | 5.00/5 |
|
|
|
 |
|
 |
Hi Paul Firstly - you are doing wrong: nothing. It is bug, which was fixed in 0.8.8 (http://www.codeplex.com/Catharsis[^])
But the problem you uncovered is crucial and must be explained.
Such information as "Session was dispsed ..." let us informed: Application was heavily damaged and is unrecoverable!
DESIGN: Note to Catharsis design: Whenever you are accessing database via NHibernate your DAO (in Catharsis it's base class NHibernateDao), remember that there are calls to ISession object. NHibernate can use it very efficiently when it is opened for all the time you need it == this is the Request life-time period. Catharsis Opens ISession when request starts and Closes it when request ends (Session is during that time stored in Request's collection 'Items') You can then work with database in one "session" what's very effective (saving time to create, to connect, caching etc.)
To have correctly Opened and Closed ISession there are HTTPHandlers. They are fired by Application object (the center point of your web-application) (see web.config, and global.asax)
That is the workaround. But what exactly has happened?
WHY: The BUG damaged the Application object! So heavily that that object was still existing but not working. And also the events (OnRequestStart, OnRequestEnd) was not fired. Therefore no ISession was correctly created....
The result is, that you on totally different place get message about troubles with NHibernate. The truth is that in troubles was Application object.
WHO is GUILTY at this case: I gues that (Me) incorrectly handled application cache. This must be written and every one have to be aware of (READ, and AVOID THIS IN FUTURE)
Provide locking on every operation which changes the static object (compare latest 0.8.8 and yours ResourceManager.cs, AppRoleProvider.cs)
SOLUTION: Provide locks operation changing the application cache (static collections) RESTART application! There is still referenced damaged Application object and it must be replaced with new one!!!
STILL IN TROUBLES: If the lock won't help, you know where to search ... in troubles is Application not DAO!
As a pardon take this gift: How to restart application? Operations like rebuild or restart debug are not enough!!! Well the magical trick is:
Change the 'web.config' (insert space and save)! This will restart application!
Radim Köhler
Competition is as important as Cooperation
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Radim,
The runtime error "Session was disposed of or closed" was thrown because I had the wrong database connection string in my Web.config.
I had to shutdown my local:5555 connection before things started to work ok.
Hope this helps explain things.
Thanks for your help.
Regards,
Paul.
Paul Wade
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|