ASP.NET Hosting


Archives / 2003 / April
  • Microsoft UIP (User Interface Process)

    If you want to learn more about the upcoming Microsoft UIP blueprint, you'd better listen to Michael Stuart's interview.

    UIP is about:

    • MVC, controller, navigation and workflow
    • Common code for WebForms and WinForms and other user interfaces
    • and more...

    It seems something is on its way for June.

    "Michael Stuart is a Senior Consultant with Microsoft Consulting Services (MCS) and has been completely taken with .NET. He is working on the next generation of Microsoft Application Blocks, or BlueBricks, a collection of classes that you can use for free in your applications, that use best-practices in a variety of areas.

    He talks with us about the current blocks available, for ADO.NET and Exception Handling, and also gives us a sneak peek at the next bluebricks coming down the road, including a User Interface facade layer, an application updater (using the BITS Background Internet Transfer Service), and a Configuration Manager block for dealing with config files, including code for persisting connection strings. "

    [Dot Net Rocks]


  • Code Generation Network - Interview of Dave Thomas

    Many people have pointed out the existance of the Code Generation Network.  This looks like a very nice site and has a big list of code generation tools.  While browsing through it, I found a link to this interview of Dave Thomas.

    [Eric J. Smith]

    Good interview about code generation.
    Next week there will be an interview with the DeKlarit guys about C# development with code generation.


  • ASP.NET Authentication Question

    I can't seem to find an answer to this:

    Is it possible to use the tag in web.config to allow some of the pages in your site to be non-secure, meaning users can browse them without being redirected to the login page?

    [Roy Osherove]

    Sure, after protecting your pages with the following configuration: 

    <authentication mode="Forms">
    timeout="25" />

    <deny users="?" />

    you can authorize access to the Errors folder (for example) by adding this to the same web.config file.

    <location pah="Errors">
    <allow users="*" />

    You could also do the same by adding a web.config file in the Errors folder, which content would be:

    <?xml version="1.0" encoding="utf-8"?>
    <allow users="*" />


  • Application domains, unloading assemblies and Visual Studio add-ins

    It could be the title of a nice story, but it is not... a nice story :-(

    So, to be able to unload dynamically loaded assemblies, we need to load them in an AppDomain. Then it is possible to unload the AppDomain using AppDomain.Unload.
    So far, so good. It works well when I test it in a WinForm application.
    The problem is that I need to do the same in a Visual Studio add-in. There arise the problems! I won't go into the details here, but I suspect that it's due to the fact that a VS add-in is a COM object.

    If someone already had to create a VS add-in that can load and unload assemblies, please help!



    The Operating systems and Middleware Group at Hasso-Plattner-Institute at University Potsdam focuses its research activities on Aspect-Oriented Programming (AOP) and Dynamic System Configuration in context of Rotor and the .NET framework. We have reported our findings in a number of international conferences (AOSD'03, WORDS'03, ISORC'02 - see

    With this email we want to announce availability of LOOM.NET - our .NET-based aspect weaver - for download. You may find additional download information and a link to LOOM.NET at

    [Andres Aguiar]


  • RSS for CodeProject

    I once mentioned about a web service that CodeProject has and how easy it would be to convert it into an RSS feed.  So yesterday I got the urge to do it.  Anyway I've created an RSS feed for the latest articles on CodeProject at  I thought maybe some other people might want this as well.  So Enjoy and let me know if you find any problems with it.

    [Wes Haggard]

    Enfin ! Merci Wes.


  • C#Builder

    Borland has detailed the new name for Sidewinder, C# Builder for the Microsoft .Net Framework. uggh. I'll still call it Sidewinder since that is a cooler name.

    [Jason Tucker]

    Too bad they don't keep the codenames :-(
    Delphi was one of the best product names. Sidewinder and Octane were better than C#Builder, but it is probably easier to market C#Builder.


  • Octane, Sidewinder, Delphi for .NET

    Borland gives some information about its upcoming .NET products. No new screenshots, so check the old ones out.

    Octane is the code name for the next release of Borland Delphi.

    Octane will support both Microsoft Win32 and .NET Framework development with the Delphi language and Visual Component Library (VCL) framework.

    Delphi for .NET is a set of integrated development tools planned as features in Octane for building new Delphi applications on .NET and to assist in migrating existing Win32 Delphi applications to .NET. Borland has already released preview versions of this technology in Borland Delphi 7 Studio, including a .NET compiler for the Delphi language, and previews of VCL for .NET. The aim with these technologies is to allow a Delphi developer to move to .NET, taking their Delphi skills and much of their current Delphi source code with them.

    Delphi for .NET will be released as part of Octane. Octane is planned for release at the end of 2003.

    Sidewinder is the code name for another important Borland .NET initiative. Project Sidewinder is a RAD Development Environment for pure C# Language .NET development.

    Sidewinder is planned for release in the Summer of 2003.


  • Cool system tools

    Peter Provost says he used Handle from Sysinternals. Handle is a great little tool I wasn't aware of: it tells you which processes have a file open. It is particularly useful when you have a problem with a file beeing locked, but do not know what put the lock on it.

    Sysinternals has tons of other useful little tools like this. I remember that their first tool I used was NTFSDOS to read NTFS partitions from DOS. I happened to play with their tricky Blue Screen Of Death screensaver as well.


  • .NET Weblogs - Isolate referrals?

    The "related reading" section of my list of tools is becoming very long and so makes the size of the page and download time bigger and bigger. I'm interested in seeing the referrals, but Scott, do you think you could come up with a solution to have them on a separate page (keeping pingback/trackback on the page)?
    Otherwise, with time passing by this page may become to big.


  • Best persistence, object-relational mapping, data-access layer generation tool?

    As this is a frequently asked question, and since we have here some people that may have used such tools, maybe it'd interesting to ask the question again and synthesize opinions.

    What is the best persistence, or object-relational mapping, or data-access layer generation tool?

    In fact the goal is not to define the best tool, but to point out the advantages and limitations of the tools you used. This would help other developers in the process of deciding which tool is best adapted to their own situation.
    I have been asked by e-mail:

    It is really nice to have a complete tool list, but the thing is, there are too much
    available there.

    Which product is the best persistent product for .net, in your mind?
    Or could you recommend several?

    I am not able to reply by myself, so this requires some collective work... Feel free to comment the way you want (comments, posts or e-mail). I would aggregate the results in a story.

    If this works out well, we could do the same thing for other categories of tools.

    Update: I started to aggregate opininions.
    Update: Yves Reynhout tells us how to select an object-to-relational-database mapper.


  • Opinions about persistence, object-relational mapping, data-access layer generation tools

    Here I aggregate opinions on persistence, object-relational mapping, data-access layer generation tools.
    Check the complete list of tools.


    Let me put it this way. If the instructions for using a condom were as complicated as the ones for using OlyMars, AIDS would have killed us all by now. 

    [Robert McLaws]

    Totally agree here...I've tried to use the thing...I still don't get it. Somebody clue me in here.

    [David Stone]

    Lots of negative talk regarding OlyMars lately. I will admit that I don't have the time to figure out how to use it (gave it a try a few times, but just wasn't my style). However, it is still a very cool tool, it just has a crappy interface on top of it, but it isn't meant to be production code anyway now is it? My understanding is that it is just a research project...and when is the last time you saw a research project with warm fuzzy documentation and a sexy UI?

    [Jesse Ezell]

    It's not just the interface. The templates have a very steep learning curve as well.

    [Eric J. Smith]

    OlyMars is not only an object/relational mapping layer, nor a DAL generator. OlyMars is a generic (multi-purposes) code generator, which can provide services for generating a DAL, database aware controls, or whatever you want if you write your own templates. Hence the complicated instructions for use.

    [Christophe Lauer]


    LLBLGen is really that simple: choose your database, select the tables/views you want, and click generate. It will create the TSQL for all the sprocs, and the DAL classes.

    [Chad Osgood]

    Entity Broker

    I have been using EntityBroker on a recent project and it is extremely easy to use. I highly recommend it. It is just about to be RC1. I prefer a fully object mapper like EntityBroker over a DAL generator any day. Still not in a final release, but the docs are pretty good and whole package works great (plus, you get out of the box support for multiple RDMBS's like Oracle, MS Sql, etc.).

    [Jesse Ezell]


  • ASP.NET hosting

    I have a little web service of mine and its associated WebForm interface that need hosting. Please help them. Don't leave them alone outside without a home.

    If you match one of the following cases, let me know:

    • you know of a free ASP.NET hosting solution
    • you have a free account that you don't use
    • you have space somewhere that you'd like to share with me
    • you want to sponsor my web service (I'd do some advertising for you or your company of course)

    Note: SQL Server not required.

    Help would be appreciated :-)

    coacoacoa recommends WebMatrixHosting, but their file size rules makes it unusable ("Maximum size of any file in your account is 100,000 bytes (for .mdb and .dll files maximum size is 1 MB)- any files beyond this limit will be automatically deleted." - FAQ).

    Notes to coacoacoa:

    • Visual Studio .NET is not supported, only WebMatrix, see features.
    • Access to the SQL Server works through Enterprise Manager (part of the SQL Server client tools).

    Update: .Net Playground has a 1 MB file size limit, so it isn't much better.
    Update: Brinkster's free hosting solution is even worse: no code-behind, no global.asax supported! As they say: "Anything is possible"...
    Update: WebMatrixHosting allows 10 MB in SQL Server, and .Net Playground allows big enough Access databases. So I think I'll end up putting my big files in a database.


  • Future of .NET Weblogs

    ScottW asks “Should the way .NET Weblogs works change?”.

    Scott, in my opinion, you are mixing two things:

    • The space that DNWL provides to us for our personal weblogs.
    • The community emerging from the people who have their weblogs hosted at DNWL.

    I don't know exactly what you had in mind first when you decided to create the DNWL, but I have an idea about it ;-).

    It seems that you now want to create aggregated feeds. This is really what RSS enables us to do: aggregate feeds to create new sites or feeds.
    I think that this is a good idea, but that it isn’t linked to the weblogs hosted on DNWL. For example the "MS guys" feed should not contain only the content of the weblogs from MS guys hosted on DNWL.

    The kind of community that DNWL can build is not a community of content where every post from every weblog is interesting as far as .NET is concerned.
    What DNWL can do for us (the guys building the community) is attract people toward our weblogs. How do we discover new and interesting weblogs? By jumping from weblog to weblog.
    Some weblogs die, others appear. Some stop being interesting because the subjects they address are not as interesting as they used to be for you, while others start to address exactly what is of interest for you.
    So please, don't try to filter out some of the content that we produce. What makes the success here (as anywhere) is diversity.
    Sam Gentile’s or ScottGu’s weblogs are are attracting more readers than the other weblogs and their RSS is more read than the aggregated one of DNWL? This is no surprise. Who would read the complete DNWL feed? The sum is greater than the parts. That doesn’t mean that it is the complete sum that is interesting. THERE WILL ALWAYS BE NOISE. And what I consider noise may not be what you consider noise.

    Scott, you see DNWL as a particular web space. Then what you envision can be done, but with leaving the DNWL as they are currently, and building the aggregated weblogs that you name “categories”.

    Whatever you decide to do Scott, we will help you. But it should be something that does not impose a weight on us (the publishers).

    In conclusion, here is how I see the whole thing:

    • The weblogs should continue to live the way they live currently. We should be ready to give you some money to keep this system alive if needed. If you want to let the development of the DNWL system to someone, you could still hand him the source code out.
    • You can create the aggregated weblogs. These weblogs would be the only ones who could really be called the “.NET Weblogs”. The content of these weblogs would be selected mainly from our weblogs, but also from others (there are so many great weblogs related to .NET outside…).
      Some content could also come from dedicated posts only appearing on these weblogs, the way it works on Chris Sells’ weblog.
      Suggestion: one feed for the complete content, plus one feed for each category. This would be close to what Slashdot does. This would allow people to subscribe to selective content.

    Even if it looks as a split, I think that it looks like a solution everybody can be happy with.
    Our weblogs would be alive and well, and good clean oriented new weblogs would be available for people interested in .NET news. I think that there is an opportunity here to create a Slashdot-like web site (+ RSS feeds) oriented toward .NET and independent from Microsoft.


    As a complement, I would also like to reply to Samer Ibrahim’s post:

    I really think the problem with the .NET Weblogs feed is it has turned into more a "forum" than a feed of individual blogs.  I've seen that a lot of posts on the .NET Weblogs that seem to be just redundant posts, either people just copying and pasting other people's posts from within the .NET Weblogs feed or commenting on them on their blog when it's more appropriate to comment in the comment section of the orginal poster's blog.

    I have to agree when you say that DNWL has turned into a "forum". We tend to read the weblogs of others DNWL weblogers, and quickly reply to them or duplicate their posts.
    I agree that it can be bad. But this is good in many ways! People outside DNWL do not read all the DWNL weblogs! It is important that we report news appearing on good DNWL weblogs to attract people to these.
    Personally, here is how I see my weblog:

    • A personal weblog oriented mainly toward .NET but with some personal opinions on other subjects as well.
    • Like a weblog that is not completely tied to DNWL. People reading my web site do not always know that is it hosted on DNWL and DNWL does not mean anything to them.
    • A weblog part of a community whose name is .NET Weblogs. That means that I try to have my weblog a true member of the DNWL community, dragging people to other DNWL weblogs, and inserting my weblog into the DNWL flow. My weblog is read mainly because it is on DNWL. It would have been difficult for it to exist outside of this very space because DWNL is a concentrate of good content that attract a lot of readers.

    That means that when I post to my weblog, I think of it as part of DNWL, but also as an independent weblog.

    I've seen many posts that seem very childish in nature.  People seem to be battling on who's right and attacking each other through the feed as well.  To me this is a place to learn, right and wrong is a matter of opinion. just ask the Linux guys what they think.  In my perception, as the .NET Weblog grows, it will become more and more important for people to be cognizant of their wording and of their fellow bloggers.

    DNWL is still very young, and it will take some time before it matures. And at the same time, it will never completely mature. It is a beast that cannot and should not be mastered. The more you’d try to define how it should be, the more you’d be disappointed with what it is really.

    My two cents. Whatever happens, I think that .NET Weblogs will remain a success :-)

    Update: Roy Osehrove said the same kind of things very clearly. Go and read his opinion too.


  • RSS for the list of .NET tools

    Chad has setup an RSS feed for my list of .NET tools. Good quick and simple work. Bravo Chad!

    I just read Fabrice's and Julie's comments on creating an RSS feed for Fabrice's excellent list of .NET tools.  Since I'm sitting in my hotel room whilst out of town at a client's, and since I've generated some RSS feeds internally from HTML-only sources on many occasions before, I thought I'd do this one as well.  I'm generating a constant pubDate at the moment.  It's currently dynamic, but I might have it generate a static feed and only change it when Fabrice updates his page.

    You can subscribe to it here.  I don't have access to my webserver at home, so the "playground" will have to do for the moment. 

    Update: It now includes descriptions ;-)

     [Chad Osgood]


  • 130+ tools and growing

    I've started to put together a categorized list of various .NET tools.
    This list is not complete of course, but can be useful if you search a tool for a specific need.

    This list will be accessible from my main page using the ".NET Tools" link.

    We now have more than 130 items in the list! That makes a lot of tools for us to use. What is still missing from our toolbox? With all these tools (not counting the components and libraries), we have no excuse for bad software ;-)


  • Web Service-based aggregator

    Harry Pierson and Tim Marman are the first ones to talk about a server-based aggregator.

    So, for an aggregator to be really useful to me, it needs to de-couple the aggregation/datastore from the presentation. When I'm at work (or not at my home computer in general), I want to be able to get at the data via a web browser. When I'm at home, I want a nice, powerful UI like Harvester or Syndirella or NewsGator. When I'm travelling or on the train or whatever, I want to be able to read on my PocketPC. And, most importantly, I want all of these to use the same data set. When I've already read something at work, I want to know that when I get home, and vice versa.

    [Loosely Coupled]

    Coming back from holidays, I was about to create such an RSS Aggregator Web Service... Then I discover all the activity around RSS aggregation, archives, SharpReader, Harvester, RSS Bandit...

    I think I will work on such a WS anyway. It can be useful by itself, and could even more give ideas to others.
    Hint for the creators of SharpReader, RSS Bandit, Harvester and others: please create add-in support in your RSS client readers. Soon (and I first) we will need to integrate into your software. Feeds or feed lists may not always come from simple HTTP GET but from web services for example.


  • Delphi implements keyword (or dynamic interface integration) (or introduction)

    I guess that my next feature request for eXtensible C# (or idea at least) would be the ability to add methods (and by extension any kind of members...) to a class. By using an attribute we could add one or a set of methods to classes.

    This could become even more useful if XC# provided us with the ability to define new interface implementations on classes. This would mimic the Delphi implements keword.

    Here is a small explaination of what this keyword does in Delphi:

    Dynamic aggregation of interfaces is not supported by the CLR, because it cannot be statically verified. In Delphi for .NET, all interfaces must be declared on the type. Dynamic aggregation is provided by the implements keyword, as the following code illustrates.

    program Project1;
      i = interface
        procedure Wombat;
      TA = class(TInterfacedObject, i)
        procedure Wombat;
      TC = class(TInterfacedObject, i)
        fa: TA;
        property a: TA read fa implements i;
    { TA }
    procedure TA.Wombat;

    This is something that is really missing in .NET. In .NET, if you have a bunch of objects that must implement an interface, you have to implement every method of the interface in every object. In Delphi, you just have to implement the interface in one object (let's call it an interface helper), then say that all the objects that must implement that interface are using this interface helper.

    With an XC# attribute, it could look like this:
    interface IMyInterface
      void method1();
    class MyInterfaceHelper : IMyInterface
      void method1()
        // do something
    [Implements(typeof(IMyInterface), typeof(MyInterfaceHelper))]
    class MyClass1
    [Implements(typeof(IMyInterface), typeof(MyInterfaceHelper))]
    class MyClass2
    This way, the behavior of MyClass1 and MyClass2 objects are the same regarding the IMyTypeInterface, and we don't have to duplicate code or redeclare every method of the IMyInterface interface in every class.
    Maybe there are existing ways to do this in .NET? I'd be curious to know how you solve this kind of situation...
    Update: I just realized that AspectJ does that for Java through what it calls introduction.