Monday morning I brought (rather I biked) my laptop back into the office after reformatting and installing Windows Server 2008 on it. FolderShare seems to be holding up rather well, but I ran into an unexpected issue, no Bluetooth. Not just no Bluetooth drivers, there is no bluetooth support in Server 2008. Thankfully I found a good guide written by Gill that explains how he installed the Microsoft Bluetooth stack on windows server 2008. His guide, and a comment by Crispin Wright, was what I needed to get Bluetooth running on my HP nx9420 business class laptop. First I followed Gill’s steps for coping the files to a temp folder and changing the INF files. The following list of files I was unable to find in the folder specified, but it turns out they were in the folder created by HP’s Bluetooth driver setup (kind of following Crispin’s instructions for his dell). - btwaudio.inf
- btwaudio.sys
- btwavdt.inf
- btwavdt.sys
- btwrchild.inf
- btwrchid.sys
I also wrote a powershell scrip to go thru and modify the .inf files. #Executes a find and replace on all files in the path $includes
#You can pass in a path with a wild card (c:\temp\*.txt)
#Credit: http://www.aaronlerch.com/blog/2007/03/powershell-replace-string-function.html
function Replace-String($find, $replace, $includes)
{
get-childitem $includes |
select-string $find -list |
% { (get-content $_.Path) |
% { $_ -replace $find, $replace } |
set-content $_.Path }
}
#Actual find replace for blue tooth inf files
Replace-String "amd64...1" "amd64...3" ".\*.inf"
One thing I do was run the HP provided INF files thru the Powershell script as well before I could get the drivers to update. The device I updated first in the Device Manager was the HP Integrated module with a hardware id of USB\VID_03F0&PID_171D&REV_0100. Once this device was updated, then the other blue tooth devices were found, and I just pointed them to my temp BT folder with the updated INF files.
I still have one unknown device, and it appears to be for the Bluethooth PAN profile, but I have been unable to find a driver for it. I thought that I would try running the setup application provided by HP to install their drivers, but even after that, I was still left with that unknown device, so I would recommend not running the HP setup program, as it appears to provide no added benefit.
While installing my Bluetooth keyboard and mouse, I was prompted for drivers, and again, pointed to my temp BT folder to install the HID drivers. I’ve since rebooted a couple of times, and my mouse and keyboard continue to work. I don’t have any other Bluetooth devices to test at this time.
UPDATE:
Looks like I was in a hurry and missed coping the bthpan.inf file in the first step. Gill asked me to take a look again, and sure enough, I hadn’t copied it to my BT temp folder, so it never got updated. Once I made the change, I was able to get the PAN driver installed.
Thanks again Gill.
I’m in the process of setting up my work laptop after reformatting and installing Server 2008 64 bit (a change from Vista 32 bit). My primary reason for this was to continue my Hyper-V evaluation that I started at home. I just got an upgrade in the form of 4 GB of ram and a new external hard drive with a FireWire (FireWire 400/800, USB 2.0 and ESATA) for my laptop. I’ve been using Microsoft Groove for folder synchronization between my home and work computers. Much to my surprise after getting Groove installed and my account moved over to my laptop, I was greeted with an error message indicating that folder synchronization was not supported on a 64 bit OS!?!?! I think the first hit I got on Google summed up my thoughts, “You got to be kidding?”. Alas, they were not. So I’m back to using Folder Share, which has gotten an upgrade from when I stopped using it just over a year ago. It does in fact support 64 bit, and actually has better limits then Groove, including a max file size of 2GB and 10,000 files per folder. The only major limitation is that you can only have 10 folders shared, but I only need 5-6, maybe 7, so it’s good enough for me right now.
As part of the migration project I am working on, I have to install, configure and test several Asp.net 1.1 applications on Windows Server 2008 (IIS 7). Asp.Net 1.1 is not part of the default installation, nor is it a feature such as .Net 3.0, but rather a stand alone install that takes some extra steps to get working. If you do a search for asp.net 1.1 on Server 2008, you will get several hits explaining how to install, but that’s not the point of this post. Basically, Asp.Net 2.0, which is included with Server 2008, is backwards compatible with Asp.Net 1.1. So far, I’ve only found one incompatibility in all of our web applications, and that is related to a change in System.Web.UI.WebControls.ListControl selected index property setter. In .Net 2.0, the setter was re-written such that assigning 0 (zero) to the SelectedIndex property when no items are present in the ListControl will cause an ArgumentOutOfRange exception. The exact error: [ArgumentOutOfRangeException: 'lstSites' has a SelectedIndex which is invalid because it does not exist in the list of items. Parameter name: value] System.Web.UI.WebControls.ListControl.set_SelectedIndex(Int32 value) +5138552 I had made a decision that if changes were small enough, I would update the applications in an effort to avoid installing Asp.net 1.1 on Windows Server 2008. This helps by requiring one less thing to install for testing, disaster recovery, and reduces the attack surface of our servers.
This one took me a little longer then I figured. Maybe I’m just trying to do stuff the wrong way, but I don’t know, I feel like my use case is correct. What am I talking about anyway? I am talking about creating a set of web tests in Visual Studio Test Edition (well Team Suite) that I can actually use in a real world situation (i.e. Have tests that work on a dev, staging and production server). The problem is/was, hard coded URLs for my dev server, which ultimately would have to be changed to point at staging and production. Before proceeding, let me spell out what I’m trying to do (use case): - Use the VS GUI to create and most likely run my tests
- Single place to store the web server, and other settings that I can use for all my tests
At first, I thought this was going to be a very easy change, as there is a “Parameterize Web Servers” option when you right click on the root node of your web test. This creates a context variable, which I thought was cool, until I realized it was on a test by test basis, not project. I guess I was looking for a project wide context parameters file, but couldn’t find one. I did some searching and supposedly you can set an environmental (yes, from a command prompt) variable named Test.<ContextParameter>, however I was unable to get this to work. I think this might only work when invoking mstest from the command line which makes some sense, but kind of throws a wrench in the works. While this would be perfectly acceptable for a un-attended build server, what if I needed to point to a new dev server in the GUI? I then moved to a XML data source with a single “line” of data": 1: <?xml version="1.0" encoding="utf-8" ?> 2: <Config> 3: <UrlRoot>http://dapltp101.dmz.pri</UrlRoot> 4: <LoginUserName>asalvo</LoginUserName> 5: <LoginPassword>123456</LoginPassword> 6: </Config>
This worked pretty good, except that when selecting UrlRoot from the drop down list of available options, it replaced the entire URL, and not just the URLRoot. I do like how they made the property grid “strong typed” in that it gives you the fields you defined for your data source, but I didn’t want to replace my whole URL. Also, I could not edit the value after selecting my XML data source value.
Looking at the format of ContextProperties in values, as well as how the data source was referenced, I decided to try typing what I wanted in myself. I went to the URL value and replaced the URL root with the name my XML data element, and this worked.
For example, given:
Type this in the value field for your URL in the Request object on the test: {{ConfigXml.Config.UrlRoot}}/Location1
Like I said, that took me a little while longer then I would have thought. I should have went with my gut and tried that format soon after getting the regular XML data source to work.
I do have one last issue (well the fist of many I am sure), and that is, I have two URL’s when I really should only have one. When I hit the root of my website, I am redirected to a https:// URL, and that is treated differently. I’d like to capture the redirected URL and use that so I don’t have to maintain two values in my configuration file, but I’m just gonna roll with it for now.
Tonight was my first ever CodeFest event, physical or virtual (yes, there are virtual CodeFest’s being held via Second Life). The doors opened around 5pm, and I was there a little after that. There was an abundant supply of Papa John’s Pizza (+2 points) and free soda. Looking over the room, it’s pretty interesting to see all these laptops and power strips plugged in. Defiantly not something the fire inspector would approve of. Let’s hope I don’t have to break out the back window to escape a giant electrical fire. Dave Bost and Larry Clarkin are our Microsoft hosts this evening, and they brought a boat load of prizes to give away. They also brought about 7 USB hard drives for people to copy the lab VM’s and labs for those who didn’t know, or didn’t bother to download stuff. With the exception of the labs, getting a VM provided to me is a bit to easy, so I decided to setup stuff myself. For the CodeFest tonight, I’m running on VMWare server 1.05, with a Win2k3 SP2 guest OS. I loaded up VS 2008 Team Suite, .Net Framework 3.5 beta 1, and SQL 2008 RC0 (I told you, I like a challenge). I’m rolling with Win2k3 for my guest because I only have 2 GB of ram on my laptop (note to self, hit up boss for 2 more GB of ram and reinstall server 2008), and windows server 2008 takes about 350MB more memory in my experience over Win2k3. Linq and new Language Features - Automatic Properties: Define your property with an empty get and set (similar to an Interface declaration), and the compiler creates the backing variable for you.
- Extension Methods
- Object Initializers: Assign values to properties or fields in the “constructor” without having a constructor explicity defined
- Collect Initializers
- Anonymous Types: Combines Linq with Object Initializers to create new class definitions at run time based on the results returned from Linq.
Here is an example of Linq with an Object Initializer. The var we are creating is named contacts and is declared with var, as it’s not a strongly typed class. Notice that while there is a T-SQL feeling, the order of the expression is somewhat backwards with the from statement coming first (which I believe helps with intelli-sense among other things). The last line declares a new class (which you could call contact), that has two public properties, Name and Phone. “var” is not a dynamic declaration like it is in VB6, it is strongly typed, it just saves you the hassle of writing the type on the left side of the =. The compiler inspects the right side, and figures out what the type should be. You can mouse over “var” in VS, and it will tell you what type it is. 1: var contacts = 2: from c in customers 3: where c.State == "WA" 4: select new {c.Name, c.Phone);
What you can’t see in the above code snippet (because I just typed it in manually), is that the auto formatting of the Linq statement in VS absolutely rocks, formatting the statement exactly the way I would have manually. It really makes the code more readable, and I can appreciate this little feature.
WPF
We pretty much jumped right into the lab/demo/code for WPF, so I didn’t take many notes, as you can see. The demo we were working on was pretty cool, it had some nice animations, graphics, etc. While we didn’t code all of the animations ourselves (copy/paste from the lab files), you can easily go in to the source and look to see how the designer (person) accomplished the various animations.
Conclusion
Overall I was very pleased with the CodeFest, and will defiantly be checking out the next one. I didn’t have any issues with my custom VM I put together, as the lab files were provided as stand alone downloads prior to the class.
Today I was working on installing a WCF application on Windows Server 2008, hosted by IIS 7. This was my first attempt at running WCF on IIS 7/Server 2008, and the first time WCF was used on this particular box. Needless to say, things didn’t work as expected. Since this is a test box, I didn’t have a public cert for use with SSL, but IIS 7 adds a very nice Self Signing Cert feature, which is accessible in the IIS Manager under the root server node (look for server certificates under IIS). Unfortunately, the self signed cert uses the computers fully qualified host name, and you are not given an option to fix this. Looking around, it looks like the self signing cert tool that shipped with the IIS 6 resource kit allowed you to specify the domain name. Anyway, this is a minor inconvenience, and easily fixed by using the windows hosts file to redirect. You need to remember to export the cert from the IIS management tool, and import it to your trusted root certs on any client computer to avoid getting warnings in IE, and errors in your WCF client applications. However, certs were not the reason for this post, the following error was: Error the client and server are no longer in sync for their wcf service settings. System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (405) Method Not Allowed. ---> System.Net.WebException: The remote server returned an error: (405) Method Not Allowed. at System.Net.HttpWebRequest.GetResponse() at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) --- End of inner exception stack trace --- Server stack trace: at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException) at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout) at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at … Looking back at this error, I think I may have missed a key clue. The phrase “The remote server returned an unexpected response” should have clued me in that something wasn’t setup right. I usually see this type of error when IIS tries to display an error message in HTML, thinking that it’s a browser request. The WCF client application isn’t expecting HTML, so it throws an error. It’s been awhile since I worked with WCF, and I forgot basic trouble shooting 101 for a couple of minutes, and finally remembered to just type in the URL to the .svc file on the server. I was greeted with an IIS 7 error page that listed some pretty good trouble shooting steps. The first one said to check the server handler mappings, which I did, and noticed there were not mappings for .svc. I found a blog post on wcf and silverlight, which explained how to enable WCF on IIS 7. Now I had installed WCF (.net 3.0) via the features section of server manger in Server 2008, but I guess that doesn’t actually enable it to work with IIS 7. Maybe I didn’t install something in the correct order. Fair enough, and the fix is simple. From a command prompt (I ran mine with admin privileges under UAC), execute ServiceModelreg -i in c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation. Once this was done, I went back to my handler mappings and saw entries for .svc. I’d like to note that the error messages returned by IIS 7 in the browser window (when browsing from the web server itself), gives allot better error and diagnostics information for trouble shooting.
So I find my self downloading disc 1 and disc 2 of VB 6 enterprise edition from MSDN subscriptions. I also downloaded the VB6 runtime files and SP6 for VB6. You may be wondering why I am doing this. I wrote, and sold a copy of an application in a former life (or so it seems looking back to the year 2000), and I need to help my “client” get the app up and running on a new PC. However, I have to make a few tweaks in the VB6 code. I hope I still have all of the dependencies still. This might actually motivate me to rewrite the app in .Net, something I have been wanting to do since .Net came out, now almost 7 years ago I think.
I wanted to try out SQL 2008 for the upcoming Madison DotNet Code Fest. I had downloaded the February CTP last week, and started out with that. I actually got everything installed and went out to find the sample databases on CodePlex, and discovered that RC0 had been released this week. Oh well, just revert the virtual machine to it’s pre sql state and start over with RC0. Pre-Installation Pre Requisites The following pre requisites were installed without issue as part of the setup process. All pre requisites were included with the ISO. - .Net Framework 3.5
- .Net Framework 3.5 SP1 Beta 1
- Hot fix for Windows Server 2003 (KB942288-v2)
- Reboot
My base Windows 2003 VM has only an 8 GB system drive, so I install everything to a second virtual hard drive which usually has a drive letter of E, as it does in this case. So all of my install paths are to E:\, but the folder structure remains the same. SQL Server Installation Center The SQL server setup has been completely revamped from SQL 2005, and there are some noticeable additions from the February CTP as well (the most prominent is the addition of a GUI option to use an existing configuration file). Planning: Requirements, documentation, system configuration check, upgrade advisor Installation: New stand alone, new fail-over cluster, add node to cluster, upgrade from SQL 2000 or 2005, search for production updates Maintenance: Edition Upgrade (like changing from developer to Enterprise), repair, or remove from cluster Tools: System configuration checker, installed SQL server features discovery report, upgrade integration services packages Resources: Documentation, community, CodePlex samples Advanced: Install based on configuration file, Advanced cluster prep and completion Options: Platform (x86, x64, ia64) Installing I went ahead with and chose the stand alone installation. Five items were checked before I was allowed to proceed: Minimum OS version, setup administrator, restart computer, WMI service, validation for SQL server registry keys. All items passed and I proceeded to the product key. The installation media seems to have all of the files for evaluation, express and express with advanced services. I didn’t have a product key, so I just went with the evaluation version, which should give me 180 days to evaluate. After selecting the edition, I had to accept the EULA and then have some setup support files installed. Another system check was run, and everything passed except I received a warning notification because I had enabled the windows firewall. A message indicated I should check out a page at Microsoft, but the page had no mention of firewall configuration. Clicking next, I was brought to the Feature Selection page, and the main portion of SQL 2008 setup. Feature Selection These are the options I chose, and is not an all inclusive list. - Instance Features
- Database Engine
- Reporting Services (I’m interested to see how the non-IIS reporting services works)
- Shared Features
- Business Intelligence Development Studio (to create some sample reports)
- Client Tools Connectivity
- Integration Services (Was required in Sql 2005 for maintenance plans)
- Client Tools Backwards Compatibility
- SQL Server Books Online
- Management Tools – Basic (Management Studio, SQLCMD, and SQL Power Shell provider)
- Management Tools – Complete (Support for Reporting Services, Analysis Services, and Integration Services, SQL Profiler and DB Tuning Advisor)
- Microsoft Sync Framework (interested to see how this works with mobile devices)
Instance Configuration - Default instance
- Instance ID: Default of MSSQLSERVER, however you can change this, and it automatically updates the install paths
- Instance root directory: E:\Program Files\Microsoft SQL Server\
- Computed SQL Server Directory: E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER
- Computer Reporting Services Directory: E:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER
I do like how you can change the instance id for the default instance, as well as choosing a named instance (which you’ve always been able to do). Disk Space Requirements After selection your options and installation drives, you are presented with a screen that shows drive space requirements. Unfortunately, even with changing all install options to E, half of the required disk space is still targeting my C drive. - C:\windows: 1188 MB Required
- Shared Features (E): 724 MB Required
- Instance Directory: 267 MB Required
Server Configuration Here you configure the user accounts for each service. Sql Server Browser defaults to Local Service. Sine I am not running in a domain, nor do I need access to any domain resources, I created a local user account and used that for the Sql Server Agent, Database Engine, Reporting Services, and Integration Services service. You can also change the collation, but I left it as the default: SQL_Latin1_General_CP1_CI_AS Database Engine Account Provisioning: Windows Authentication or Mixed mode. I went with integrated, and added two users to the server admin role. Data Directories: Here you can choose the root data directory, as well as where user data files, log files, and the system databases are installed to, wow, that is a nice change. I’m using the default of E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data, but in our production systems, this would defiantly change. Being able to specify this stuff at install time is awesome, and I can defiantly see the need for some install scripts. Filestream: Here you can enable FILEStream for T-SQL access. I have no idea what this means, so I will leave it off for now. You have to specify a windows share name when you enable to, so I am curious to find out more. You can also allow remote clients to have access (via the share?). Reporting Services You have three options, Native mode with default configuration, SharePoint with default configuration, and install but do not configure. I’m going with the native with default configuration in the essence of time. Installation Progress Prior to starting the install, a final system check is performed, and all checks passed. Before clicking install, you are presented a summary of what will be installed, as well as given the path to the .ini file that contains the configuration. I have included my path below, but it will very from install to install as the path includes a date stamp: C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20080618_142128\ConfigurationFile.ini The installation process took longer then I remember to install the February CTP, but other then that, the install wen smoothly and no errors were encountered. Post Install I went into the SQL server Configuration manager, and under Sql Server network Configuration, I enabled TCP access so I could remotely connect to the SQL server. I also opened up port 1433 to my local subnet in the Windows Firewall. First Thoughts I tried connecting with SQL Management Studio 2005 to my new SQL 2008 instance, and it failed, so that is a little disappointing, but not unexpected. Same goes for Visual Studio 2008 pre-SP1 (since SP1 is still beta I have not installed it on my main machine), but SP1 beta 1 fixes this issue. Management studio looks pretty much the same, just that there are new options in the navigation tree such as auditing and resource governor. I was able to connect to a SQL 2000 database without issue. I noticed a new publish to web service option when right clicking on a database, but I’m not sure if this is part of SQL or the Sync Framework. The report manager site came up ok, but the reports site threw a permissions error indicating my service account did not have the proper permissions.
Found some new (and updated) remote help and IT tools today. The first tool, is a new one (to me at least), which I found from an article on Tech Republic, and is called CrossLoop. Cross Loop is a remote desktop/vnc clone that allows you to view the desktop of another PC. It is designed for remote helpdesk scenarios, as it requires a user at the remote computer to initiate a connection. The second and third tools are Team Viewer and Ultra VNC, both of which I have heard of before, but have been updated. Team Viewer’s free offering has been expanded for non-commercial use, while Ultra VNC has several plug-ins and add-ons which make it suitable for a variety of scenarios. The add-ons for Ultra VNC that interest me the most are the Repeater and Nat2Nat, both of which allow for connections to be made across firewalls. Digging thru the Ultra VNC forums, I came across several posts talking about a solution (Ultra VNC with various add-ons) that enables remote connections to be made using SSL on port 443 without the need to configure firewalls. The Ultra VNC repeater is licensed under the BSD license, but I’m not sure on the other add-ons. The NatHelper server that is used for the Nat2Nat looks like it might be hosted by Ultra VNC, as I didn’t see any download links for it. The final tool I came across today, was Spice Works, which was an add displayed on the Ultra VNC sight. SpiceWorks is a free (supported by ads, and not open source) tool for IT professionals looking to manager their network. Here is a review from PC Magazine (which also drops the names of a couple of open source network monitoring tools).
|