Open Source Issue Tracker ASP.NET Applications

Thursday, May 06, 2004 5:27:18 PM
Rate this Content 0 Votes

I spent a little while today checking out 3 different open source ASP.NET issue tracking applications.  We need something like this at work so I was trying to find the best one to give me a jump start figuring I can add any features not already there but why re-invent the wheel with so much good free open source stuff out there.  The first one I checked out was a project on SourceForge.net called BugTracker.NET. It has nice features and is in C# as are all the ones I looked at today but what shyed me away from it was that the code was not in code behind but in script tags all mingled with the markup. I'm not used to working that way and I prefer to keep the code as separated from the declarative markup and presentation stuff as possible.  I think this one was developed in a text editor, it didn't come with a project or solution for VS.NET.  I'm not oppposed to developing with a text editor but the code behind structure is important to me and there is nothing preventing one from doing that even if you are using the command line compiler. I spent a little while trying to move the code from the script tags into code behind files but finally decided to look for other possible starter applications.

Actually I knew there was one at ASP.NET put out by Microsoft as reference architecture so I figured I would check it out. And I did, but it was missing an important feature for an issue tracking application, it didn't have a file attachment feature.  Bugs often are reported by someone doing a screen capture to show an error message and I needed this feature. The above application had it but the MS starter kit did not.  I was frustrated enough at the inline code problem that going back to it was not an option, it just wasn't as good an architecture so I figured I would develop an attachment feature on top of the starter kit. Luckily for me I decided to peruse the ASP.NET forum associated with the starter kit and found where someone else had posted a message about needing the attachment feature and saying he'd found it in a project on the GotDotNet workspaces that appeared to be based on the starter kit but had some additional features. Its called BugNet and it is a very well architected application. It makes use of the Microsoft Application Blocks for Data and Exception Management and has a cleanly defined separation between UI, business, and data layers.  Some of you may have read about Master Pages, a feature we can loook forward to in ASP.NET 2.0 that will make it much easier to templatize layout, but Paul Wilson has already implemented it for the current .NET release and his model is incorporated in this app.  Its a great reference application for those wanting to learn ASP.NET, OOP, and be ready for the next version of ASP.NET. This is the one we decided to go with. I still need to add some reporting capabilities and once its released to our team I'm sure I'll need to add features based on user input.  I'm excited about it, it could evolve into a full project management solution in ASP.NET.

Copyright 2003-2010 Joe Audette
Share This Using Popular Bookmarking Services

re: Open Source Issue Tracker ASP.NET Applications

Sunday, May 09, 2004 1:27:01 PM B Rogers
cool... I'm checking it out now.. I also need one of these and didn't like BugTracker either

encrypt and decrypt query string

Tuesday, July 03, 2007 6:35:18 AM hanusoftware

This code has been used to encrypt and decrypt query string .No matter what the lenght of the url is ,this code will encrypt the key and the value the query string into 25 digit






using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Specialized;
using System.Collections;
using System.Web;



namespace BusinessLayer
{
public class QueryString : NameValueCollection
{
private string document;
public string Document
{
get
{
return document;
}
}
public QueryString()
{
}
public QueryString(NameValueCollection clone): base(clone)
{
}
//################################################## ###############################################
//This Class Has been used to get the URl from the address browser of the page
// http://www.hanusoftware.com
//################################################## ###############################################
//this method has been used to get the current URL of the page
public static QueryString FromCurrent()
{

//returns the current url from the address bar
return FromUrl(HttpContext.Current.Request.Url.AbsoluteUr i);

}
/// <summary>
/// This method has been used to divide the Address URl into characters chunks
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static QueryString FromUrl(string url)
{
//it breaks the address URL in array with separator of ? mark
//this line breaks the Querystring and page
string[] parts = url.Split("?".ToCharArray());
//instantiate the class object
QueryString qs = new QueryString();
//assign the page address to the variable
qs.document = parts[0];
//if there is any data in array
if (parts.Length == 1)
return qs;
//breaks the QueryString into characters chunks with separator mark &
string[] keys = parts[1].Split("&".ToCharArray());
foreach (string key in keys)
{
//again breaks into chunks by + mark
string[] part = key.Split("=".ToCharArray());
if (part.Length == 1)
qs.Add(part[0], "");
//adds the QueryString key and value pair to the assigned variable
qs.Add(part[0], part[1]);
}
return qs;


}
/// <summary>
/// This method clear all exceptions in the passed string
/// </summary>
/// <param name="except"></param>
public void ClearAllExcept(string except)
{
//calls the method to clear except
ClearAllExcept(new string[] { except });

}
/// <summary>
/// this is the usual method which has to call clear all exceptions
/// </summary>
/// <param name="except"></param>
public void ClearAllExcept(string[] except)
{
//take an arrayList
ArrayList toRemove = new ArrayList();
foreach (string s in this.AllKeys)
{
foreach (string e in except)
{
if (s.ToLower() == e.ToLower())
if(!toRemove.Contains(s))
toRemove.Add(s);

}
}
foreach (string s in toRemove)
this.Remove(s);
}
/// <summary>
/// this method adds the key value pairs in QueryString of the URL
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
public override void Add(string name, string value)
{
//checks nullability of the name
if (this[name] != null)
//if not null then assign value to it
this[name] = value;

else

base.Add(name, value);

}



public override string ToString()
{

return ToString(false);

}


/// <summary>
/// this ethod has been used to join all the characters array to the URL
/// </summary>
/// <param name="includeUrl"></param>
/// <returns></returns>
public string ToString(bool includeUrl)
{

string[] parts = new string[this.Count];

string[] keys = this.AllKeys;
//for each keys breaks the URL into chunks
for (int i = 0; i < keys.Length; i++)

parts = keys + "=" + HttpContext.Current.Server.UrlEncode(this[keys]);

string url = String.Join("&", parts);

if ((url != null || url != String.Empty) && !url.StartsWith("?"))

url = "?" + url;

if (includeUrl)

url = this.document + url;

return url;

}

}

}



Software Development India

Comments are closed on this post.
Donate Money to support the mojoPortal Project. View Joe Audette's profile on LinkedIn View Joe Audette's profile on The Guild of Accessible Web Designers site