I need to develop a solution that will provide the ability for a user to search based on a city and state. The user should have the ability to request that the search result
You might wanna have a look at GeoNames.
I have written a .NET WCF client for GeoNames, available here.