Hello world!

November 12, 2010 1 comment

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Categories: Uncategorized

Using Custom Message Tones in Windows Mobile 6

January 12, 2010 19 comments

Having your own message / ring tones is a bit tricky in windows mobile. Beside you know where to store your media files.
While your desired custom sound files are not located in a specific folder, only the windows default sounds are selectable in the “Notifications” tab within the “Sounds & Notifications” settings.

 

However, once you move your sound files (like .mp3) to “\Application Data\Sounds” they are available within the “Play sound” combobox in “Sounds & Notifications”.

 

 

Categories: Uncategorized

Administer your entire Windows 7 in one place

January 4, 2010 2 comments
In Windows 7 perfrom the following tasks:
  1. Create a new folder on the desktop.
  2. Rename it to: "GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}".

Categories: Uncategorized

Operate HTTPS (WCF) Webservices in IIS 7 under Windows Server 2008

September 9, 2009 6 comments

In subsequent to my post “Operate HTTPS (WCF) Webservices in IIS 6 under Windows Server 2003", I’d like to show you a solution to the same problem, but running IIS7 instead. Again I use my sample WCF based Webservice and a self signed certificate for my demonstration.
Other than IIS6, IIS7 has to be "WCF enabled" first, by installing WAS’s HTTP Activation as I have explained in my posting "Enable Windows Communication Foundation (WCF) based Webservices in IIS7".

So first let’s start with the server certificate. With IIS7, creating self signed certificates is much easier, than before. Just open the IIS Manager and navigate to your server’s home node.

Now double click the "Server Certificates" icon in the "IIS" section.

Afterwards click "Create Self-Signed Certificate …" in the "Actions" pane. Finally, just specify a friendly name for your certificate and press ok.

The default way to add an HTTPS binding to your website would be as follows:

Navigate to your Site and select "Bindings…" from the "Actions" pane. 

After clicking the "Add" button, you have to specify the binding type. Just select "https" from the "Type" combo box. Finally choose the desired certificate and press ok.

So, when I request my web application’s wsdl, it does not consider any custom host header for the https based service port.

<wsdl:service name="HelloWorldService">
  <wsdl:port name="BasicHttpBinding_IHelloWorldService" binding="tns:BasicHttpBinding_IHelloWorldService">
    <soap:address location="http://michael-test.local/HelloWorld/HelloWorld.svc/HelloWorld"/>
  </wsdl:port>
  <wsdl:port name="Secure_Hello_World_Endpoint" binding="tns:Secure_Hello_World_Endpoint">
    <soap:address location="https://win-nk5u2ghvbh1/HelloWorld/HelloWorld.svc/HelloWorld"/>
  </wsdl:port>
</wsdl:service>

 

Hence we can’t use this mechanism obviously. So, we have to strike a new path. So, remove the just created HTTPS binding and perform a restart of your site.
Since the known adsutil.vbs scirpt is no longer available in IIS7, you have to switch to the "appcmd.exe" (http://technet.microsoft.com/en-us/library/cc772200(WS.10).aspx) tool.
Now, let’s use this tool in order to create a HTTPS binding via the command line. This provides us the flexibility to specify a custom host header, which isn’t supported by the the IIS Manager. The syntax we use appcmd in this case is like:

%SYSTEMROOT%\System32\inetsrv\appcmd set site /site.name:<site name> /+bindings.[protocol=’https’,bindingInformation=’*:443:<host header>’]]

In my case I’ve used:

%SYSTEMROOT%\System32\inetsrv\appcmd.exe set site /site.name:Michael /+bindings.[protocol=’https’,bindingInformation=’*:443:michael-test.local’]

Finally I’ve done an “iisreset” in order to be sure my changes took effect. Now, when I request the same wsdl as above, it returns all service ports as expected:

<wsdl:service name="HelloWorldService">
  <wsdl:port name="BasicHttpBinding_IHelloWorldService" binding="tns:BasicHttpBinding_IHelloWorldService">
    <soap:address location="http://michael-test.local/HelloWorld/HelloWorld.svc/HelloWorld"/>
  </wsdl:port>
  <wsdl:port name="Secure_Hello_World_Endpoint" binding="tns:Secure_Hello_World_Endpoint">
    <soap:address location="https://michael-test.local/HelloWorld/HelloWorld.svc/HelloWorld"/>
  </wsdl:port>
</wsdl:service>

Categories: Uncategorized

Enable Windows Communication Foundation (WCF) based Webservices in IIS7

September 9, 2009 Leave a comment

Other that in IIS 6, IIS 7 does not support WCF based .Net webservices just
after installing it. When you try to access a deployed WCF Service, you will receive the following error message:

HTTP Error 404.3 – Not Found
The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.

 

The reason is a new mechanism called "Windows Process Activation
Services" (WAS). I won’t explain this technology in depth. But in short this infrastructure is responsible for firing up new worker processes (w3wp.exe) that host the desired web application (http://msdn.microsoft.com/en-us/library/ms789006.aspx.

This bit of information might bring us one step further! Why? Because there is a Windows Server 2008 Feature called "WCF Activation".
So, there are two ways of enabling WCF based webservices in IIS7:
First, add the "HTTP Activation" from the "WCF Activation" feature by using the Server Manager.

The second way is much more "automation" friendly. The .NET runtime provides a commandline tool that does exactly the same as described before. It’s called "ServiceModelReg.exe" (http://msdn.microsoft.com/en-us/library/ms732012.aspx).
In order to enable .NET webservices by commandline, just execute the following command as an Administrator:

"%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r -y

And that’s it! Now you can deploy and access your WCF based web application!

Categories: Uncategorized

Operate HTTPS (WCF) Webservices in IIS 6 under Windows Server 2003

September 8, 2009 Leave a comment

In general any corporate relevant communication should be secured, by utilizing HTTPS. Thus an IIS Admin has to provide the infrastructure for applications in order to use this infrastructure. This means that the IIS provides a SSL Certificate as well as configuring the proper Host Header value.
The following sample explains the steps to provide this infrastructure. It’s based on a self signed SSL Certificate and a sample WCF based Webservice. It just focuses on explaining the infrastructure part. It does not explain how to implement secure WCF Services.

First you have to enable SSL communication for the site you want to secure. Thus, open the "IIS Manager" from the "Administrative Tools" and select the site you want to manage.

Press the right mouse button and select "Properties". Then press the "Advanced" button within the "Web site identification" section on the "Web Site" tab.

As you can see, this dialog lets you specify a custom "Host header value" for the unsecured simple HTTP communication, but not for SSL based communication. In order to show you how to configure a custom host header value for HTTPS communication I will create a self signed certificate first.
Therefore you have to install the "IIS 6 Resource Kit Tools" available at http://www.microsoft.com/downloads/details.aspx?familyid=56FC92EE-A71A-4C73-B628-ADE629C89499&displaylang=en.
Then bring up the "SelfSSL" Console and create a self signed certificate by using the "selfssl.exe" tool like this: "SELFSSL /N:CN=michael-test.local /T /V:365".

Now change to the "Directory Security" Tab an select "Server Certificate". Click "Next", select "Assign an existing certificate" and click "Next" again. Then select the just generated self signed certificate from the list and click "Next". Ensure the SSL port is set to 443 and click "Next". Finally click "Next", followed by "Finish".
Go back to the "Web Site" tab and press the "Advanced" button within the "Web site identification" section again. As you can see, the "Add …" button in the "Multiple SSL identities for this Web site" section is enabled now. So press this button and specify the SSL port you have configured before (it should be 443). Confirm this dialog by pressing "OK". Finally close the "Properties" Window as well, by pressing "OK".

So, when I request the wsdl document for my deployed sample webservice, I get the following:

<wsdl:service name="HelloWorldService">
  <wsdl:port name="BasicHttpBinding_IHelloWorldService" binding="tns:BasicHttpBinding_IHelloWorldService">
    <soap:address location="http://michael-test.local:9090/Test/HelloWorld.svc/HelloWorld"/>
  </wsdl:port>
  <wsdl:port name="Secure_Hello_World_Endpoint" binding="tns:Secure_Hello_World_Endpoint">
    <soap:address location="https://winsrv2003ee.corp.harbauer-net.org/Test/HelloWorld.svc/HelloWorld"/>
  </wsdl:port>
</wsdl:service>

 

It seems that the host name for the HTTP based service port will be resolved correctly, but the HTTPS based service port its name is not as expected. Rather the actual machine’s name will be used.
To address this issue we have to utilize the "adsutil.vbs" script as shown in the following sample. The script’s documentation can be found at http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/d3df4bc9-0954-459a-b5e6-7a8bc462960c.mspx?mfr=true.

%systemroot%\system32\cscript.exe //nologo %systemdrive%inetpub\adminscripts\adsutil.vbs set /w3svc/<website id>/SecureBindings ":443:<host header>"

In my case I use:
%systemroot%\system32\cscript.exe //nologo C:\Inetpub\AdminScripts\adsutil.vbs set /w3svc/1252729226/SecureBindings ":443:michael-test.local"

Finally I perform an "iisreset" in order to apply the changes.

After utilizing the adsutil script and restarting the Webserver both, the HTTP based as well as the HTTPS based custom host headers are resolved correctly, as you can see in the wsdl document for my sample webserive:

<wsdl:service name="HelloWorldService">
  <wsdl:port name="BasicHttpBinding_IHelloWorldService" binding="tns:BasicHttpBinding_IHelloWorldService">
    <soap:address location="http://michael-test.local:9090/Test/HelloWorld.svc/HelloWorld"/>
  </wsdl:port>
  <wsdl:port name="Secure_Hello_World_Endpoint" binding="tns:Secure_Hello_World_Endpoint">
    <soap:address location="https://michael-test.local/Test/HelloWorld.svc/HelloWorld"/>
  </wsdl:port>
</wsdl:service>

Categories: Uncategorized

Microsoft Interoperability Council

May 20, 2009 Leave a comment

Microsoft Austria officially launched the Microsoft Innovation Center Vienna on 21st of October 2009. In Addition to this program, Microsoft established the Austrian Microsoft Interoperability Council. This board consits of a couple of delegates from austrian’s lead companies as well as some delegates from the public sector. I’m very proud, that I’ve been nominated as a membor of this board.

During the inital meeting on February, 10th 2009 we identified about 30 topics this council may deal with. These particular topics have been bundled into five workstreams:

  • Public Processes
  • LoB Systems / Semantics
  • ESB / EAI / Workflow
  • Identity Interoperability
  • Document Formats & Standards

Each workstream will be processed by separate working group. So, I’m very excited about the council’s outcomes, which will be published by Microsoft, and hopefully influence the future of Microsoft.

Categories: Uncategorized
Follow

Get every new post delivered to your Inbox.