BizTalk 2006 R2 - RFID: Weird Error in sample
I've spent the last couple of days digging into the new RFID technology that is included with BizTalk 2006 R2. I removed BizTalk 2006 from my standard VPC image and I dropped the new RFID components on the server. This VPC image was build on Windows 2003, SQL Server 2005 - SP2, VS 2005, ASP.NET 3.0 and WSE 2.0. It would turn out that the WSE 2.0 would turn out to be the problem for me.
I successfully completed the core install and configuration and eagerly tried to setup the Contoso sample that is included. This sample includes a sample Device Provider, a Reader Simulator and a Sample process to handle the simulated tag reads. However, when I ran the ContosoSetup.cmd file that is suppose to install, configure and startup the demo, I received the following error.
This request operation sent to net.tcp://<server_name>:7891/rfid/service/ProviderManager did not receive a reply within the configured timeout (00:01:00). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the operation or because the service was unable to send a reply message. Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.
Being fairly new this, I had no idea what this meant, so I decided to skip the sample and just try to manually add in the Contoso provider by using the RFID management tool. However, I didn't have any luck with this either. So I dug deeper into the Help files and fortunetly there is some pretty good advice for debugging and resolving this issue. Basically, when you register a new provider, a new virtual directory is created in IIS. A number of issue were preventing this VD from running correctly. The biggest issue was the Windows SharePoint Services was including the new directory in its list of managed paths. Therefore I had to go into the SharePoint Administration sites, select "Manage Virtual Server", select "Default Website", select "Manage Defined Paths" and then manually add in the virtual directories to the "Excluded Paths" list. Once I had done this, then I was at least able to get the website to load in the browser. I had placed a basic test.html file in the directory and I was able to view the HTML contained within it.
However at this point, I still couldn't register my new provider. I dug deeper into the docs and they recommended browsing directly to the hosting.svc file that is contained within the virtual directory. When I did this, I got the ever helpfull "Server Error" message in my browser and nothing more. Thankfully, I have run into this issue enough that I had a couple of ideas of what to do. I started by opening the web.config file in the root c:\inetpub\wwwroot folder. Inside this file, there is a <Trust> tag that by default had a setting of "level=WSS_Minimal", I needed to change this to "Full". Also, the RFID engine requires Anonymous Access to be setup on the virtual directory, so I loaded up the directories settings and checked for this. While I was in there, I noticed that the Contoso Installation Script had tried to set the default user account to "Administrator" (this was the account I was logged in under). However, the account name was misspelled as "Administartor" and this had caused the Application Pool to fail and shut down. I changed the spelling error and restarted the new App Pool that was setup during the sample installation
After making these changes, I tried to browser the hosting.svc file again and I received another error. An error occurred loading a configuration file: Access to the path 'c:\inetpub\wwwroot\web.config' is denied. Fortunetly, the fix for this issue is included in the help docs. To resolve this issue, grant the IIS_WPG group Read permissions to the web.config file.
After I made this last change, I was able to view the hosting.svc file in my browser. I once again tried to manually register the Contoso provider using the RFID administration tool and everything worked. I re-ran the Constosetup.cmd file and then went in and re-did all of my manually fixes to correct all the issues with all of the virtual directories it created. I used the RFID management console to manually startup the provider, device and process. Once I did this, I was able to successfully receive tag events from the Contoso Device Simulator.
A bit of a bumpy ride based on the WSE 2.0, but it was nice to see almost all of my issues outlined and documented in the core Help Docs.
Cheers and keep on BizTalking