Here’s a quick reminder that applies to ReSharper 5.1 in Visual Studio 2010 on Windows 7.
ReSharper plugins on Windows 7 live in the following location:
C:\Users\<User Name Here>\AppData\Roaming\JetBrains\ReSharper\v5.1\vs10.0\Plugins\
Here’s a quick reminder that applies to ReSharper 5.1 in Visual Studio 2010 on Windows 7.
ReSharper plugins on Windows 7 live in the following location:
C:\Users\<User Name Here>\AppData\Roaming\JetBrains\ReSharper\v5.1\vs10.0\Plugins\
I recently ran in to a problem with a simple Windows forms application that I was using to test an NServiceBus endpoint. The forms application simply allowed me to add messages to the endpoint input queue without having to invoke a number of other components in the system; useful for development and testing.
The forms application had been written using NServiceBus 2.6 but had been upgraded to NServiceBus 3.3.2. However, when I ran the upgraded version of the forms application it was using over 40% of available CPU. This didn’t happen when using NServiceBus 2.6.
The issue turned out to be permissions when the forms application tried to access its input queue. The solution was to delete the existing queues and to configure the application to run the NServiceBus installers on start-up.
In this case the NServiceBus was self-hosted within the forms application so I invoked the installers when I created the bus, something like this:
var bus = NServiceBus.Configure.With() .Log4Net() .DefaultBuilder() .XmlSerializer() .MsmqTransport() .UnicastBus() .LoadMessageHandlers() .DisableTimeoutManager() .CreateBus() .Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
Note that if your process doesn’t actually need an input queue because it only sends messages you can avoid the necessity of creating the input queue altogether by using send-only mode:
var bus = NServiceBus.Configure.With() .Log4Net() .DefaultBuilder() .XmlSerializer() .MsmqTransport() .UnicastBus() .DisableTimeoutManager() .SendOnly();
<sourcecontrol type="filtered"> <sourceControlProvider type="svn"> <trunkUrl>http://<server name here>/repository/ProjectName/Trunk</trunkUrl> <workingDirectory>C:\SomePathToWorkingDirectory</workingDirectory> <executable>c:\svn\bin\svn.exe</executable> <username>someusername</username> <password>somepassword</password> </sourceControlProvider> <exclusionFilters> <pathFilter> <pattern>/SomePathToFilter/*.*</pattern> </pathFilter> </exclusionFilters> </sourcecontrol>
<sourcecontrol type="filtered"> <sourceControlProvider type="svn"> <trunkUrl>http://<server name here>/repository/ProjectName/Branches/v2.0.0.0</trunkUrl> <workingDirectory>C:\SomePathToWorkingDirectory</workingDirectory> <executable>c:\svn\bin\svn.exe</executable> <username>someusername</username> <password>somepassword</password> </sourceControlProvider> <exclusionFilters> <pathFilter> <pattern>/SomePathToFilter/*.*</pattern> </pathFilter> </exclusionFilters> </sourcecontrol>
<sourcecontrol type="filtered"> <sourceControlProvider type="svn"> <autoGetSource>true</autoGetSource> <trunkUrl>http://<server name here>/repository/ProjectName/Branches/v2.0.0.0</trunkUrl> <workingDirectory>C:\SomePathToWorkingDirectory</workingDirectory> <executable>c:\svn\bin\svn.exe</executable> <username>someusername</username> <password>somepassword</password> </sourceControlProvider> <exclusionFilters> <pathFilter> <pattern>/SomePathToFilter/*.*</pattern> </pathFilter> </exclusionFilters> </sourcecontrol>This seems to have solved the problem and the branch builds are now working correctly. However, I’m not all together sure why this works because the documentation for our version of CCNet indicates that autoGetSource is optional but defaults to ‘true’.
public override void GetSource(IIntegrationResult result) { result.BuildProgressInformation.SignalStartRunTask("Getting source from SVN"); if (!AutoGetSource) return; if (DoesSvnDirectoryExist(result) && !CleanCopy) { UpdateSource(result); } else { if (CleanCopy) { if (WorkingDirectory == null) { DeleteSource(result.WorkingDirectory); } else { DeleteSource(WorkingDirectory); } } CheckoutSource(result); } }Looking at the code above if you set autoGetSource to ‘false’ CCNet won’t get try to checkout/update the source from Subversion at all.
You may have noticed that when creating or editing application pools in IIS 7 you can choose between 2 different modes: Classic and Integrated. So what’s the difference?
Firstly, a quick reminder on how to get to the application pools. Crack open the IIS manager and select Application Pools from the connections tree-view on the left. You’ll see a list of application pools which you can select. If you right-click on an application pool and choose “Basic settings…” in the pop-up menu you can change the “Managed pipeline mode” using a drop-down. [2]
IIS manager showing basic settings for an application pool
Microsoft documentation describes an application pool in the following terms:
“An application pool is a group of one or more URLs that are served by a worker process or a set of worker processes. Application pools set boundaries for the applications they contain, which means that any applications that are running outside a given application pool cannot affect the applications in the application pool.” [1]
It goes on to say:
“The application pool mode affects how the server processes requests for managed code. If a managed application runs in an application pool with integrated mode, the server will use the integrated, request-processing pipelines of IIS and ASP.NET to process the request. However, if a managed application runs in an application pool with classic mode, the server will continue to route requests for managed code through Aspnet_isapi.dll, processing requests the same as if the application was running in IIS 6.0.” [1]
In versions of IIS prior to version 7, ASP.NET integrated with IIS via an ISAPI extension (aspnet_isapi.dll) and and ISAPI filter (aspnet_filter.dll). It therefore exposed its own application and request processing model which resulted in “ASP.NET components executing entirely inside the ASP.NET ISAPI extension bubble and only for requests mapped to ASP.NET in the IIS script map configuration” [3]. So, in effect, there were 2 pipelines: one for native ISAPI filters and another for managed application components (ASP.Net). This architecture had limitations:
“The major limitation of this model was that services provided by ASP.NET modules and custom ASP.NET application code were not available to non-ASP.NET requests. In addition, ASP.NET modules were unable to affect certain parts of the IIS request processing that occurred before and after the ASP.NET execution path.” [4]
In IIS 7 the ASP.NET runtime was integrated with the core web server, providing a unified request processing pipeline exposed to both native and managed components.
Some benefits of the new architecture include:
There’s a nice description of how ASP.Net is integrated with IIS 7 here.
The following error occurred while registering ASP.Net in IIS on Windows 7 using aspnet_regiis.exe -i:
Operation failed with 0x08007000B An attempt was made to load a program with an incorrect format.
The solution was to run the 64-bit version of aspnet_regiis.exe located in the Framework64 folder.
Audio stutter occurs when playing back videos using Flash player. The CPU is not overloaded and network bandwidth is available.
In my case this was caused by Flash Player 11. I don’t know what they’ve done in that version but it simply won’t playback videos without audio stutter regardless of what web browser hosts the plugin.
The solution was to uninstall Flash 11 and install version 10.3. Links to the installers can be found here:
Where can I find direct downloads of Flash Player 10.3 for Windows or Macintosh?
You can tell if FRT is installed because when you open the IIS manager and select a web site the option to Failed Request Tracing… option is missing.
Fig 1 - IIS Manager with no Failed Request Tracing… option
To enable this feature:
1. Open the Server Manager.
2. Expand Roles and select Web Server (IIS).
Fig 2 – The Server Manager
3. Scroll down to the Role Services section.
4. The Tracing feature will not be installed.
Fig 3 – Tracing feature not installed.
4. Click Add Role Services.
5. Enable Tracing.
Fig 4 – Enable Tracing
6. Click Next etc. to install the feature.
7. Close the Server Manager and reopen the IIS Manager and select a web site.
8. Failed Request Tracing… is now available.
Fig 5 – Failed Request Tracing… is now available.
9. Click on Failed Request Tracing… and select Enable.
10. Click OK.
Fig 6 – Enable Failed Request Tracing…