# Monday, April 19, 2010

Just published out version 1.2 of uManage.  It now includes a little more automated setup process as well as the new Admin Portal which as of right now only allows the system administrator to view and change some system settings.  The next release (~ 1.5) will really have a lot of the new functionality that will start to make the product really usable in an organization for managing users.  I got a request from one of the previous releases for some screenshots.  I added more to CodePlex and will include them here as well.  If you have an Active Directory test environment the app takes less than 10 minutes to have up and running, so just give it a shot, worst comes to worse and you remove it.

Capture Capture1 Capture2 Capture3 Capture4

Check it out now: http://umanage.codeplex.com

Check back here for more in the future!

-Brent

del.icio.us Tags: ,,
posted on Monday, April 19, 2010 3:59:00 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Sunday, March 21, 2010

Well, it has been a busy week but I managed to find a few hours to update uManage to include a setup wizard as well as fix the first issue.  For those who just want to download it visit Codeplex.

The setup wizard was always in the master plan to make it easy to setup the application as well as in the future allow IT Pro’s who may not know much about ASP.NET to simply download the application as part of Microsoft’s Web Platform Installer.  So essentially, once downloaded IIS and the File System would already be configured and simply need someone to run through the wizard to configure everything else.  Pretty simple I think.

In addition the first issue fix was included.  Of course I was the one that logged it but nonetheless it was important.  In Version 1.0 the membership section was not encrypted which meant that the username and password could potentially be read by anyone who has access to the file system and possibly not to the domain.  They could be employees or potential hackers who want to cause problems.  Either way when the setup wizard is run it encrypts the membership provider section which makes it pretty hard to get to the username and password for the application.

Of course anyone who uses this application really should create a new user account that has delegated rights to mitigate any major security problems.  I will have a new post soon on how to set all of that up as I have a feeling the developers out there might not know what that is all about.  Security is still important people!

Well off to pack for a trip, but check back soon for updates.

-Brent

posted on Sunday, March 21, 2010 8:41:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] Trackback
# Sunday, March 14, 2010

Well, over the past week or so I have been working on a new ASP.NET web application.  It really served two or three purposes for me.  One was to brush up on Active Directory programming which is really not that much fun, but is still required in most enterprise programming scenarios simply because it is usually readily available for SSO type services for applications.  The second which was way more fun was to get more familiar with Visual Studio 2010 and in particular the .NET 4.0 framework.  A lot of the new ASP.NET features are well needed and deserved in my opinion but that is a whole other post on its own.  The last reason to do this was really the fact that I could not find a self-service style portal available on the internet for free or that was a regular website and not some SharePoint implementation.  So I wrote my own!

The initial plan was simply to create a website that allows users to access the site and update their personal information like telephone numbers to take the burden off of IT and HR to have to add the information.  Of course not to pawn off any more work from IT to HR but the next logical step is to create an HR dashboard in the system that allows help desk techs and HR to create new employees in the system or even to disable and delete employees from the system.  After all HR already enters employees into Payroll, benefits, and god knows what else.  At least now the information can be stored in AD and potentially be usable by other applications.  The current implementation does not implement a lot of the hidden attributes like Assistant, Employee ID, Badge Number, etc. but depending on feedback they can easily be added.

The best part about all of this is that Administrators still have full control over how users are created, which OU’s they should be added to, etc.  In the future I want to integrate Exchange support as well so that it really is a seamless process for creating users.  Worst case scenario the System Administrator’s job is a little easier.

The project is hosted on CodePlex and is available under the Ms-PL license which is an OSI compliant license so its really a benefit to all.  Did I mention it’s free?

That’s all for now!

-Brent

posted on Sunday, March 14, 2010 5:06:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2] Trackback
# Thursday, May 14, 2009

This “How To” is based on my research and simple testing and is meant to assist in the process of changing the URL of a MOSS 07 installation.  I don’t have a complex setup so it may not work for all of you but it should help:

My Scenario:

  1. We have a single Front-End Web Server and a single Back-End Database Server, each is a separate physical box
  2. We have two Web Applications, one for the SharePoint Central Admin Site, the other for our SharePoint Installation
  3. Our Shared Services Provider resides inside our primary SharePoint installation (A small installation didn’t require separate applications)

The Dilemma:

  1. We used an internal DNS (Host Header) value to setup the Web Application
  2. We now want to expose the web application to the internet and utilize SSL

The Fix (Adapted from Faraz Khan’s Post):

  1. Open the Central Administration Site
  2. Click on the “Operations” tab
  3. Under “Global Configuration” click “Alternate Access Mappings”
  4. Select “Edit Public URLs”
  5. Make sure to select the correct web application from the “Alternate Access Mapping Collection” drop down
  6. Change the “Default” URL to point to the new domain name
  7. Click Save
  8. SharePoint will now do some work to update links and everything else to point to the new location, however it does not seem to update the IIS Host Headers.
  9. Open the IIS Manager
  10. Edit the Bindings for the Web Application to use the new Host Header
  11. If it makes you feel better restart IIS

I found that this solution will correct the primary web application but has no effect on the shared services provider, when you access a My Site in MOSS it will still use the old URL.  Once I have completed testing on that portion of the change I will post an update here.

-Brent

posted on Thursday, May 14, 2009 12:39:00 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Friday, April 24, 2009

I have always had issues with IDEs when creating web sites or applications, specifically for clients who will end up using or needing “salesy” type text and content.  Because I typically do not have a dedicated copyrighting team with ASPX background I end up inserting or writing the content myself.  However, writing the content in Word and then transferring it to Visual Studio where the ASPX pages lie sometimes can be a hassle.  I did a quick Google search the other day for VS2008 Spell Check and found a really cool link to the Visual Studio Web Development team blog, where low and behold… a Spell Check Add-In for Visual Studio.

The spell checker is available for 2005 and 2008 flavors, however the express editions are not supported because they do not support extensibility.  I have been using the spell check tool and it works great.  It identifies typos in comments, HTML/XHTML and even code behind.  It uses the Word 2003 or 2007 dictionaries which are pretty reliable for spelling purposes.  Grammar of course is still up to me to polish up, but I don’t use the Word 2007 grammar check that often anyways.  The same text underlines that appear in Word also appear in Visual Studio when a misspelled word is recognized.

Check it out here

-Brent

posted on Friday, April 24, 2009 9:39:00 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Thursday, March 05, 2009

I was recently searching for links to many of the Microsoft Posters that are available in PDF format.  These posters are usually very large and can be printed out either on a printer or taken to a store like Kinko's or the UPS Store to be printed on poster paper.  This list will change or get added to as I find new posters or the links change.

Posters:

  1. Exchange 2007 Component Architecture
  2. Windows Server 2008 Components
  3. TechNet Active Directory Jigsaw
  4. Windows Server 2008 Active Directory Components
  5. .NET 3.5 Namespace Poster

Again, most of these posters are meant for printing on paper large than 8.5x11.

-Brent

posted on Thursday, March 05, 2009 8:47:25 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] Trackback
# Friday, October 24, 2008

We are currently working on implementing a stronger Continuous Integration strategy at our office. Currently we have a single web application that is built a matter of seconds after something in our Subversion repository has changed. It then automatically deploys the newly compiled and hopefully "built" release to a file server for immediate testing by our BA/SA guys.

So in the process of trying to add more projects and improving what CCNet can do for us I ran across a cool little article (http://www.codeproject.com/KB/cs/Continuous_Integration.aspx) by Sean Chambers. In it he lists a lot of the popular tools that can be integrated with CCNet. One that I missed on the first read through is CCNetConfig. If you are familiar with editing CCNet config files to add projects and project settings, you know it can be a little tedious, especially when trying to remember the correct XML keys/values. CCNetConfig is a GUI that uses similar features of Visual Studio to help you setup Projects, Tasks, Publishers, and most anything you could possibly want.

Here is a screenshot of CCNetConfig in action:

It is worth mentioning that CCNetConfig can edit the CCNet Configuration file on a remote build server or machine, and thanks to ASP.NET the application pool will automatically recycle when you save and the changes are instantly put into place (NOTE: From good sysadmin standards you might not want to do this, or at least backup the original config file first).

All around this is a great tool and can save lots of time when you need to quickly turn up a new project in CCNet. CCNetConfig is available from CodePlex free of charge:

http://www.codeplex.com/ccnetconfig

posted on Friday, October 24, 2008 10:19:45 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Wednesday, May 28, 2008

When looking for something else today I ran into a really cool site.  If you need a quick way to churn out N-Tier logic and code this site is awesome.  It will walk you through the process of building domain objects, data access layers and basic business logic.  It even creates the SPROCS for you as well.  I have not done a thorough check of the code it generates yet, however any tool that will help minimize the time to build any of this is great!

Go Here: http://ntier.inspiredeffect.com/start.aspx

Lot's of Props to Inspired Effect who put this site together it is impressive.

posted on Wednesday, May 28, 2008 5:03:39 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Saturday, March 15, 2008

Ok,

This is something that is usually one of those little annoying things that needs to be done… but you're never really sure the best way to do it. So here's the scenario:

You have a drop down list for "Courier". You bind the dropdownlist to a data source or other object with type IDataSource. The problem is what if they do not select a Courier. How do you record that they have none on file? Do you create an entry in the data source for an entry like "None"? Or do you have to add it to code?

I believe that the database should hold data that is used not take up space and cause more work… even if just a little for the data base server to have to sort through. So here is my solution: Add a few lines of code to create a "None" entry and handle it in the DB.

First you need to prep the database. For our example let's assume you have a table called couriers with the columns "CourierID", "Courier", and "Abbr". In your relational table where you will store the CourierID you need to make sure it is Nullable.

The second part is to add the code that will add the "None" entry to the Drop Down List.

Note: You can use the same procedure for other List Based Controls like the Radio Button List.

We use the "DataBound" event of the DropDownList because if we try to add our item before it has finished binding the "DataBinding" event will erase all of the entries we may have added. Use the code below:

Protected Sub ddlOrgType_DataBound(ByVal sender As Object, ByVal e As EventArgs)

Dim li As New ListItem

li.Text = "None"

li.Value = ""

Me.ddlCouriers.Items.Insert(0, li)

End Sub

So let's walk through the code… We create a list item. This allows us to specify the text, value, and all of the other properties of a list item. I have specified the text and value. The last step is to add the list item to the "Items" collection of the drop down list. We simply call the Insert method. The first overload specifies the index position for the list item to appear. I want mine to be the first in the list. The second overload is my list item.

Another option is to use the "Add" method but the list item will be placed at the end of the collection.

After this is done your extra list item will appear. Now when it is selected and saved back to the database the contents would be empty/null. You would need to add a display handler to write a label or string that said no courier is selected. Something like:

IF Contents = Nothing Then
			

    'Throw Message

END IF

Of course the decision to do it like this is purely project based. I simply wanted to provide the process for keeping the logic in code versus the database for this instance.

posted on Saturday, March 15, 2008 1:42:52 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] Trackback
# Sunday, March 02, 2008

Nothing official has been posted… yet however a certain company has begun work on a new project. Right now it is titled Roundtable. This application is a simple visitor management system, complete with a web interface, smart or thin client software, as well as a MS Outlook Style alert tool. Development has only just begun but it should not take too much time to get to work on it and finish it up. I have included a screenshot from the login screen as well. We are currently working to make sure the application uses a lot of the Web 2.0 accessibility and browser standards. Of course no Web 2.0 app would be complete with the Web 2.0 look and feel. We are hoping that the final product will be boxed and ready to ship sometime this summer… of course no promises at this point. We are also looking at the possibility of pre-built and assembled systems where you order the software and hardware together and just plug it in.

Hope you enjoy the screenshot!

posted on Sunday, March 02, 2008 8:04:30 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1] Trackback
# Saturday, December 22, 2007

Ok, so the purpose for this post is because, I myself, as well as countless others have been searching for this answer all over the net. I provide it here as a reference and resource.

Here is the situation:

  • You build an ASP.NET Web Application which is part of a Visual Studio Solution. You store your Database connection strings in your Web.Config file under the correct <connectionStrings /> section. However, in order for a true N-Tier solution in Web Applications you also have a BLL, DAL, and possibly other projects that contain your Classes and Logic for the UI layer of the Web Application. So the problem is this: how do I share my ASP.NET project's Connection String information with the DAL and other layers?

This is a simple enough idea and makes perfect logical sense, however the answer is not always easy to find. I finally sent Scott Gu and Scott Mitchell, kudos to them, the question to get the official "Microsoft" answer. As Scott explained, any Class libraries are allowed to have, as part of the project the standard "App.Config" file, basically the Windows Forms version of the "Web.Config" us ASP.NET people are used to. The App.Config file is structured a little differently than the normal Web.Config file, however it still allows for a connectionStrings setting. Attached to this post you will find a ZIP file with the sample code I use in this post.

So how does it all work?

Simple Enough:

  1. Ok first we either need to create a project or open an existing solution to work with. If you are reading this I assume we have mastered basic Visual Studio tasks
  2. The example code attached will have an ASP.NET Web Application called "WebApplication1" as well as a Class Library called "DAL". Most of the DAL work I do is all done with Datasets and TableAdapters utilizing the Visual Studio IDE and GUI, so I normally remove the default "Class1.vb" file that Visual Studio generates.
  3. Ok so first we need to make sure our Web.Config file has all of the correct information in the <connectionStrings /> section. Here is a sample:

<connectionStrings>

<clear/>

<add name="SampleConn"

connectionString="Data Source=MyDBServer;Initial Catalog=Sample;Integrated Security=True"

providerName="System.Data.SqlClient" />

</connectionStrings>

 

  1. So now the task is to setup the equivalent in our DAL class library. To do this we need to "Add" the Application Configuration File. The default name is "app.config". Just like our web.config file it is pre-populated with settings. You can leave them, they are ok.
  2. Now the fun part: we need to add the connection string parameter to the app.config section so that our TableAdapters have something to look at. But wait! How does this work, how will the TableAdapters know to look at the web.config and not the app.config you ask? Magic, seriously… when you finish with your solution and build the applications, the Classes are compiled into Classes, as long as you get the naming right, which we will describe below, then the "app.config" file for an ASP.NET Web Application is the "web.config" file. So as long as the name of the connection string matches then the Class Libraries could care less about whether it is named web.config or app.config.
  3. So here is the "app.config" code:

<connectionStrings>

<clear/>

<add name="DAL.My.MySettings.SampleConn"

connectionString="Data Source=MyDBServer;Initial Catalog=Sample;Integrated Security=True"

providerName="System.Data.SqlClient" />

</connectionStrings>

 

  1. Notice that the "name" for the connection string is actually the physical namespace for the app.config file. This is required! Make sure that you specify the name based off of the Namespace specified in your project settings for the Class Library. If your root namespace was Samples.DAL then the name should be "Samples.DAL.My.MySettings.SampleConn"
  2. Ok, that's it. Build your project and make a change to your web.config file. Notice the data is no longer connected? This means everything worked!
  3. Good Luck!
WebApplication1.zip (24.08 KB)
posted on Saturday, December 22, 2007 11:34:40 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2] Trackback
# Saturday, November 10, 2007

This is a running list of all of the ASP.NET links I have come to rely on.  If you find any that don't work anymore please let me know!  If the site is yours and don't want me to link to it please let me know as well!

ASP.NET General

ASP.NET Membership

posted on Saturday, November 10, 2007 10:10:18 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] Trackback