While trying to understand which deployment models we have in .NET 2.0 I stumbled upon the following Visual Studio 2005 add-in:

Visual Studio 2005 Web Deployment Projects

This add-in provides additional functionality to build and deploy Web sites and Web applications in ASP.NET 2.0 and Visual Studio 2005. This add-in includes a tool to merge the assemblies created during ASP.NET 2.0 pre-compilation, and provides a comprehensive UI within Visual Studio 2005 to manage build configurations, merging, and using pre-build and post-build tasks with MSBuild.

Web  Deployment Project

I think this screenshot provides a good idea about some of the the possibilities.

Henry Cordes
My thoughts exactly...

After a long time, I will try to start adding new items to my blog.
I started working for another organisation and I have been on vacation etc. etc.
In my new job I am doing a conversion for an application from .NET Framework 1.1 to .NET Framework 2.0.
It is an ASP.NET application containing around 20 projects.

After the conversion to a IIS Website in Visual Studio 2005 I hit the F5 key and got the message:

Unable to start debugging on the web server.
The Microsoft Visual studio Remote Debugging monitor (MSVSMON.EXE) does not appear to be running on the remote computer.

Visual Studio 2005 Remote Debugger
After searching around for a while MVSSMON.Exe is the application that resides in the Windows Start Menu under 'Microsoft Visual Studio 2005 > Visual Studio Tools' and is named: 'Visual Studio 2005 Remote Debugger'.
When I started the 'Visual Studio 2005 Remote Debugger Configuration Wizard', I could run the apllication as a service and debugging works always.
It seems that when you use the IIS Website model to develop webapps the remote debugger needs to be running (Visual Studio 'thinks' it is debugging a remote machine).

Henry Cordes
My thoughts exactly...

Viewstate and Postback

Published 1/12/2006 by Henry in ASP.NET | C#
Tags: ,

While working on an ASP.NET project I am building kind of a wizard. There will be dynamically created input controls like textboxes, dropdownlists, radiolists etc. So I built controls that contain validation etc.
But between postbacks, while dynamically creating "new" wizardforms (different controls than on the previous one) the viewstate cannot handle this anymore.

The following information is available:

Stacktrace starts with:
[InvalidCastException: Specified cast is not valid.]
   System.Web.UI.StateBag.LoadViewState(Object state)
   etc, etc.

So on a page that contains controls, when dynamically creating controls on this page after a postback there can arise a problem with the viewstate. I consider this to be a bug, but Microsoft explains the reason why in another manner.

After asking Uncle Google I learnt the following from the MSDN website
Dynamic controls and ViewState

MSDN website:
In most scenarios, this view state processing model works fine. Typically, you add dynamic controls to the end of a container's collection of controls. The view state information stored for the dynamic controls is therefore extra information at the end of the view state structure for the appropriate container, and the page can ignore it until after the controls are created.
However, view state information about dynamically created controls can be a problem in two scenarios:

If you insert dynamic controls between existing controls.
If you insert controls dynamically and then reinsert them during a round trip, but with different values.
If you insert dynamic controls between existing controls, the dynamic control's view state information is inserted into the corresponding location of the view state structure. When the page is posted and the view state is loaded, the dynamic control does not yet exist; therefore, the extra information in view state does not correspond to the right control. The result is usually an error indicating an invalid cast.

In other words, sorry we cannot do this with ASP.NET.
I tried to sit back and think the problem over:

After postbacks I cannot rebuild the page with new controls.

Store necessary state info in Session and use Response.Redirect(url); to redirect the aspx page to itself.

Microsoft does not even mention this in the article.

Henry Cordes
My thoughts exactly... 

.NET Framework version... (2)

Published 12/12/2005 by Henry in ASP.NET

I found a tool that does all the stuff I wrote about in this article. I think this is a helpful tool even if in version 2005 of Visual Studio Microsoft added something similar. I work on a project were no Visual Studio 2005 or Framework 2.0 is available and I use the tool a lot.

Here you can find the tool I talk about http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx, it is called: Version Switcher.

Henry Cordes
My thoughts exactly...

Load document in iframe dynamically

Published 11/3/2005 by Henry in ASP.NET | C#
Tags: ,

Supose you need to show an xml, html or aspx document inside an ASP.NET page. So you actually want to embed another page or document inside the original page. You want to load a document in an iframe dynamically from the server-side.
What you really need is an iFrame server control. However an iFrame is an html control and it's properties are not directly available at the server side (in the codebehind). So we need a way to access the 'src' property of the iFrame directly. Inside the iFrame's tag in the html of the aspx page we set the 'runat' attribute with the 'server' value.

   1:  <iframe id ="MyIframe" runat ="server"> 
   2:  </iframe> 

In the aspx.cs (codebehind) file we declare a System.Web.UI.HtmlGenericControl and name it (the name does not have to be the same as in the html page, but I think it is good practice to do so).

   1:  protected System.Web.UI.HtmlControls.HtmlGenericControl MyIframe;

We create a method we can call in order to load a document in our iFrame by using the FindControl method of the System.Web.UI.Page and typecast it This way we can acces all properties of the HtmlControl through the Attributes property. The "MyIframe" referred in Find Control is the ID as declared in the ASPX Page.

   1:  private void LoadDocumentInIFrame(string url)
   2:  { 
   3:      HtmlControl MyIframe = (HtmlControl)this.FindControl("MyIframe"); 
   4:      MyIframe.Attributes["width"] = "100%"; 
   5:      MyIframe.Attributes["height"] = "400px"; 
   6:      MyIframe.Attributes["src"] = url; 
   7:  }
  10:  // Example that calls the method
  11:  LoadDocumentInIFrame("http://www.google.com")

This way we can load a document in an iframe dynamically from server-side.
With the FindControl() we can get a reference to the HtmlGenericControl object and access the properties of it. As you will understand this is not limited only to the iFrame, but can be used for more 'HTML' controls.

Henry Cordes
My thoughts exactly...