Tip #1 (IIS): appcmd and IIS bindings:
Some more IIS (configuration) awesomeness: you can easily view the bindings for an IIS site using the following command:
- appcmd list site /site.name:”MySite”
Now obviously just viewing isn’t that cool, but you can also set them! This is extremely useful for those environment where you have work according to “Development –> Test –> Acceptance –> Production” or other variances. I hate doing the same task (manually) multiple times.
So here’s how you can “push” your bindings to a site called “MySite” in IIS.
Syntax option #1: just a host header available on all IP’s (*):
- appcmd set site /site.name:”MySite” /bindings:”http://mysite.contoso.com:80”,”http://mysite:80”
Syntax option #2: a host header bound to one specific IP:
- appcmd set site /site.name “MySiite” /bindings:”http/192.168.50.11:80:mysite.contoso.com”,”http/192.168.50.11:80:mysite”
Mind the difference in the bindings parameters syntax: e.g. http:// <> http/
Now what if you want to change one specific binding to an other value?
- appcmd set site /site.name:"MySite" /bindings.[protocol='http',bindingInformation=':80:mysite.contoso.com'].bindingInformation:192.168.50.11:80:mysite.contoso.com
In this example I changed the binding which was listening on all IP address to only listen on a specific IP address.
Or what about adding a binding witouth modifying existing bindings?
- appcmd set site /site.name:"MySite" /"+bindings.[protocol='https',bindingInformation='188.8.131.52:443:mysite.contoso.com’]
P.S. appcmd is an executable which you can find in the c:\windows\system32\inetsrv directory.
Tip #2 (SQL), is SQL Full Text Search installed?:
One of the prerequisites when installing the FIM Service is that the SQL Full Text Search feature is installed on the SQL Instance hosting your database. There’s two easy ways to see if this is the case:
- Using the services.msc mmc: check if there’s a service name SQL Server FullText Search ([instance]) where [instance] will be the name of your instance
- Using the following SQL query: IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) print 'INSTALLED' else print 'NOT INSTALLED'
Tip #3 (Visual Studio): auto-increment version info:
When you create a class in C# or your preferred language you might want to have some version information on the DLL you build. There’s an easy way to configure your solution/project to auto-increment the build version every time you compile your project.
You can do this by directly editing the AssemblyInfo.cs below the properties.
// Version information for an assembly consists of the following four values:
// Major Version
// Minor Version
// Build Number
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
In words: make sure to set the AssemblyVersion to something like “1.0.*” or “1.0.0.*” and comment the AssemblyFileVersion line. As I tested around a bit I noticed the following things:
- the AssemblyFileVersion does not work with the *
- If the AssemblyFileVersion is not commented the AssemblyVersion is ignored and the AssemblyFileVersion “wins”.
Some more background information:
- Marc Charbonneau’s Blog: Auto-incrementing build numbers in Visual Studio
- stackoverflow.com: How to have an auto incrementing version number (Visual Studio)?
- MSDN: AssemblyVersionAttribute Class
Tip #4 (Certificate Authority): RPC traffic check
Often when playing around with certificates I’m hitting gpupdate like hell in order to retrieve auto-enrollment. But if you want to make sure your CA is actually reachable from a given endpoint over RPC/DCOM you can easily check this using the certutil utility. This utility is available out of the box.
- certutil -ping -config "ca-server-name\ca-name”
- Example: certutil –ping –config “SRVCA01\Customer Root CA”