<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Vlad Hrybok's Tech Notes - Cassini Web Server</title>
    <link>http://vladsnotes.hrybok.com/</link>
    <description>The future of Internet is &lt;a href='http://httpvpn.com'&gt;HttpVPN&lt;/a&gt;...</description>
    <language>en-us</language>
    <copyright>Vlad Hrybok</copyright>
    <lastBuildDate>Mon, 05 Mar 2007 23:30:06 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>vgribok@dodgeit.com</managingEditor>
    <webMaster>vgribok@dodgeit.com</webMaster>
    <item>
      <trackback:ping>http://vladsnotes.hrybok.com/Trackback.aspx?guid=92fb8609-995a-4c0b-bd7b-48eb8182c366</trackback:ping>
      <pingback:server>http://vladsnotes.hrybok.com/pingback.aspx</pingback:server>
      <pingback:target>http://vladsnotes.hrybok.com/PermaLink,guid,92fb8609-995a-4c0b-bd7b-48eb8182c366.aspx</pingback:target>
      <dc:creator>Vlad Hrybok</dc:creator>
      <wfw:comment>http://vladsnotes.hrybok.com/CommentView,guid,92fb8609-995a-4c0b-bd7b-48eb8182c366.aspx</wfw:comment>
      <wfw:commentRss>http://vladsnotes.hrybok.com/SyndicationService.asmx/GetEntryCommentsRss?guid=92fb8609-995a-4c0b-bd7b-48eb8182c366</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h5>Summary
</h5>
        <p>
UPDATE: This sample is an <strong><a href="http://www.codeplex.com/UltiDevWebBasedMP3Pl">open-source
project now</a></strong>.
</p>
        <p>
This article describes how to build a redistributable ASP.NET application that allows
users browse remote server's file system and pick folders with MP3 files
to be played by embedded Macromedia Flash-based MP3 player.
</p>
        <h5>
          <br />
Article Sources
</h5>
        <p>
          <a href="http://www.codeplex.com/UltiDevWebBasedMP3Pl/Release/ProjectReleases.aspx">Download
article's C# source</a> in a form of Visual Studio 2005 Solution comprising ASP.NET
application and a Setup Project. Unzip the archive to "C:\".
</p>
        <h5>
          <br />
End Result
</h5>
        <p>
          <a href="./content/binary/UltiDevMP3Player-2.PNG">
            <img height="155" alt="UltiDevMP3Player-2-Thumbnail.PNG" src="content/binary/UltiDevMP3Player-2-Thumbnail.PNG" width="177" border="0" />
          </a>   <a href="http://vladsnotes.hrybok.com/content/binary/UltiDevMP3Player.JPG"><img src="content/binary/UltiDevMP3Player-thumbnail.PNG" border="0" /></a><br /><br />
After building the project you will have an MSI-based setup package that
can be installed on virtually any Windows-based PC. Installed application will
be accessible from inside the LAN as an intranet application without having to install
IIS.
</p>
        <h5>
          <br />
Prerequisites
</h5>
        <p>
- Visual Studio 2005.<br />
- <a href="http://ultidev.com/download/">UltiDev Cassini Web Server for ASP.NET 2.0</a>.
UltiDev Cassini is packaged together with the application into the Setup.exe
so that the final application would not depend on IIS being present on target system.
</p>
        <h5>
          <br />
Let's Begin (Getting Ducks in a Row)
</h5>
        <p>
A few weeks ago I stumbled upon a great piece of free software:<a href="http://musicplayer.sourceforge.net/">Flash-based
XSPF-compatible MP3 player</a>. When embedded on a page, it can take playlist over
HTTP and play it. Second nice thing was that XSPF play list format has <a href="http://www.xspf.org/validation/xspf-1_0.2.xsd">XSD
schema available</a>. .NET Framework <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconxmlschemadefinitiontoolxsdexe.asp">xsd.exe
utility</a> allows easy conversion of XSD schemas into C# or VB.NET classes
incapsulating the structure of the data defined by the XSD, as well as implementing
XML serialization to and from XML files conforming to the schema. So I had an XSPF-compatible
MP3 player and a free code generating XSPF-compatible XML. That meant I could easily
create XSPF-compatible playlists on a fly. Only if I had free ID3 tag (MP3
file metadata) access API...
</p>
        <p>
Finding ID3v2 library for .NET <a href="PermaLink,guid,7017a381-30b2-4a94-bcd4-ac17c799cf40.aspx">was
harder than I expected</a>. However search was ultimately successful. The <a href="http://home.fuse.net/honnert/hundred/UltraID3Lib/"><font color="#547699">UltraID3Lib</font></a> ended
up being just what I needed. It's a nice library; may be just be a bit over the top
object-oriented.
</p>
        <p>
Final piece is <a href="http://ultidev.com/products/Cassini/">UltiDev Cassini Web
Server for ASP.NET 2.0</a>. It's necessary because first, it can be packaged and shipped
along with any ASP.NET application eliminating requirement for IIS. Second, unlike
IIS UltiDev Cassini service works under "Local System" account, which enables access
to any local file and folder on the server. One thing to note, while this is
quite convenient to have a web server running under powerful account, it may pose
a risk if the application is exposed on the web. It's best to work with the application inside
protected local area network.
</p>
        <p>
After you have <a href="http://download.ultidev.com/Products/Samples/UltiDevMusicPlayerSampleSource.zip">downloaded the
solution</a>, unzip it on C:\. It will create "C:\UltiDevMusicPlayerSample" folder.
If you want to put it in some other folder - you can do that too - simply adjust
your project debugging settings later to point to the correct application folder
(see below).
</p>
        <h5>
          <br />
Application Flow
</h5>
        <p>
- Application has a single page (Default.aspx) containing the player control
and file a system browser (Controls/PlayerControl.ascx and Controls/PlayerControl.ascx.cs). 
<br />
- After user selected a folder with MP3 files, file system browser tree gets hidden
and player control is re-rendered to point to the dynamically-generated
playlist representing selected folder.<br />
- Player control requests dynamic playlist and custom IHttpHandler (AppCode/PlaylistClass.cs
and AppCode/xspf.cs) serves XSPF-encoded playlist containing songs in the selected
folder. Playlist contains song information retrieved from songs' ID3v2 and ID3v1 MP3
tags.<br />
- Player plays songs one by one: requesting each one from the custom IHttpHandler
(Handlers/Song.ashx) serving songs from local file system. After song started
playing player also requests song album artwork (cover art) from custom IHttpHandler
(Handlers/CoverArt.ashx) which serves image extracted from song's ID3v2 tag.<br /></p>
        <h5>Debugging
</h5>
        <p>
I had troubles getting Visual Studio 2005 internal web server to serve Flash
component. I switched to UltiDev Cassini for debugging and that has solved the problem.
Debugging with UltiDev Cassini is probably a good idea anyway since the application
is eventually going to run under UltiDev Cassini. 
</p>
        <p>
To switch to UltiDev Cassini, bring up ASP.NET application's properties, select Start
Options of the left, and check "Start External Program" radio-button. Enter "C:\Program
Files\UltiDev\Cassini Web Server for ASP.NET 2.0\UltiDevCassinWebServer2.exe" as the
program to be used for debugging, and specify "/run c:\UltiDevMusicPlayerSample\WebApp
Default.aspx 4125" (no quotes) as command line arguments. If you have unzipped solution
to a folder other than "C:\", then you will need to modify c:\UltiDevMusicPlayerSample\WebApp
part of the command line arguments to point to the actual application location.<br /><img height="450" alt="VS2005DebugSettingsForMP3App.PNG" src="content/binary/VS2005DebugSettingsForMP3App.PNG" width="787" border="0" /></p>
        <h5>
          <br />
Setup Project
</h5>
        <p>
Unlike regular ASP.NET application, this application is using regular (non-web) setup
project for installer implementation. The reason for that is the Visual Studio web
setup project is actually IIS setup project. Since we are using UltiDev Cassini instead
of IIS, regular setup project is required instead.
</p>
        <p>
Setup project packs UltiDev Cassini into Setup.exe bootstrapper and ensures application
is registered with UltiDev Cassini during installation process and gets unregistered
during uninstallation.
</p>
        <p>
Creating a setup project for ASP.NET application bundled with UltiDev Cassini is not
complex, but if you need step-by-step guide, please refer to this <a href="http://ultidev.com/products/Cassini/CassiniRedistirbWithVS2005.htm">walk-through</a>.<br /><br /><strong>IMPORTANT:</strong> When installing the application, don't just click the
.MSI file. You will need to <strong>run Setup.exe</strong> to ensure UltiDev Cassini
web server gets installed on target system. This is especially true on Vista, where <a href="PermaLink,guid,5bbdbe9b-ffe9-491f-bc55-c8f13b371850.aspx">clicking
.MSI and running Setup.exe are not nearly as functionally close</a> as it used to
be on Windows XP.
</p>
        <p>
Build &amp; Enjoy!
</p>
        <img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=92fb8609-995a-4c0b-bd7b-48eb8182c366" />
      </body>
      <title>Creating Web-Based MP3 Player using ASP.NET 2.0, UltiDev Cassini Web Server and Macromedia Flash Player</title>
      <guid isPermaLink="false">http://vladsnotes.hrybok.com/PermaLink,guid,92fb8609-995a-4c0b-bd7b-48eb8182c366.aspx</guid>
      <link>http://vladsnotes.hrybok.com/PermaLink,guid,92fb8609-995a-4c0b-bd7b-48eb8182c366.aspx</link>
      <pubDate>Mon, 05 Mar 2007 23:30:06 GMT</pubDate>
      <description>&lt;h5&gt;Summary
&lt;/h5&gt;
&lt;p&gt;
UPDATE: This sample is an &lt;strong&gt;&lt;a href="http://www.codeplex.com/UltiDevWebBasedMP3Pl"&gt;open-source
project now&lt;/a&gt;&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
This article describes how to build a redistributable ASP.NET application that allows
users browse remote server's&amp;nbsp;file system&amp;nbsp;and pick folders with MP3 files
to be played by embedded Macromedia Flash-based MP3 player.
&lt;/p&gt;
&lt;h5&gt;
&lt;br&gt;
Article Sources
&lt;/h5&gt;
&lt;p&gt;
&lt;a href="http://www.codeplex.com/UltiDevWebBasedMP3Pl/Release/ProjectReleases.aspx"&gt;Download
article's C# source&lt;/a&gt; in a form of Visual Studio 2005 Solution comprising ASP.NET
application and a Setup Project. Unzip the archive to "C:\".
&lt;/p&gt;
&lt;h5&gt;
&lt;br&gt;
End Result
&lt;/h5&gt;
&lt;p&gt;
&lt;a href="./content/binary/UltiDevMP3Player-2.PNG"&gt;&lt;img height=155 alt=UltiDevMP3Player-2-Thumbnail.PNG src="content/binary/UltiDevMP3Player-2-Thumbnail.PNG" width=177 border=0&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://vladsnotes.hrybok.com/content/binary/UltiDevMP3Player.JPG"&gt;&lt;img src="content/binary/UltiDevMP3Player-thumbnail.PNG" border=0&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
After&amp;nbsp;building the project&amp;nbsp;you will have&amp;nbsp;an MSI-based&amp;nbsp;setup package&amp;nbsp;that
can be installed on virtually any Windows-based PC.&amp;nbsp;Installed application will
be accessible from&amp;nbsp;inside the LAN as an intranet application without having to&amp;nbsp;install
IIS.
&lt;/p&gt;
&lt;h5&gt;
&lt;br&gt;
Prerequisites
&lt;/h5&gt;
&lt;p&gt;
- Visual Studio 2005.&lt;br&gt;
- &lt;a href="http://ultidev.com/download/"&gt;UltiDev Cassini Web Server for ASP.NET 2.0&lt;/a&gt;.
UltiDev Cassini is&amp;nbsp;packaged together with the application into the Setup.exe
so that the final application would not depend on IIS being present on target system.
&lt;/p&gt;
&lt;h5&gt;
&lt;br&gt;
Let's Begin (Getting Ducks in&amp;nbsp;a Row)
&lt;/h5&gt;
&lt;p&gt;
A few weeks ago I stumbled upon a great piece of free software:&lt;a href="http://musicplayer.sourceforge.net/"&gt;Flash-based
XSPF-compatible MP3 player&lt;/a&gt;. When embedded on a page, it can take playlist over
HTTP and play it. Second nice thing was that XSPF play list format has &lt;a href="http://www.xspf.org/validation/xspf-1_0.2.xsd"&gt;XSD
schema available&lt;/a&gt;. .NET Framework&amp;nbsp;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconxmlschemadefinitiontoolxsdexe.asp"&gt;xsd.exe
utility&lt;/a&gt; allows easy conversion of XSD&amp;nbsp;schemas&amp;nbsp;into C# or VB.NET classes
incapsulating the structure of the data defined by&amp;nbsp;the XSD, as well as implementing
XML serialization to and from XML files conforming to the schema. So I had an XSPF-compatible
MP3 player and a free code generating XSPF-compatible XML. That meant I could easily
create XSPF-compatible playlists on a fly. Only if I had free&amp;nbsp;ID3 tag&amp;nbsp;(MP3
file metadata)&amp;nbsp;access&amp;nbsp;API...
&lt;/p&gt;
&lt;p&gt;
Finding ID3v2 library for .NET &lt;a href="PermaLink,guid,7017a381-30b2-4a94-bcd4-ac17c799cf40.aspx"&gt;was
harder than I expected&lt;/a&gt;. However search was ultimately successful. The &lt;a href="http://home.fuse.net/honnert/hundred/UltraID3Lib/"&gt;&lt;font color=#547699&gt;UltraID3Lib&lt;/font&gt;&lt;/a&gt;&amp;nbsp;ended
up being just what I needed. It's a nice library; may be just be a bit over the top
object-oriented.
&lt;/p&gt;
&lt;p&gt;
Final piece is &lt;a href="http://ultidev.com/products/Cassini/"&gt;UltiDev Cassini Web
Server for ASP.NET 2.0&lt;/a&gt;. It's necessary because first, it can be packaged and shipped
along with any ASP.NET application eliminating requirement for IIS. Second, unlike
IIS UltiDev Cassini service works under "Local System" account, which enables access
to any local file and folder on the server.&amp;nbsp;One thing to note, while this is
quite convenient to have a web server running under powerful account, it may pose
a risk if the application is exposed on the web. It's best to work with the application&amp;nbsp;inside
protected local area network.
&lt;/p&gt;
&lt;p&gt;
After you have &lt;a href="http://download.ultidev.com/Products/Samples/UltiDevMusicPlayerSampleSource.zip"&gt;downloaded&amp;nbsp;the
solution&lt;/a&gt;, unzip it on C:\. It will create "C:\UltiDevMusicPlayerSample" folder.
If you want to put it in some other folder - you can do that too -&amp;nbsp;simply adjust
your&amp;nbsp;project debugging settings later to point to the correct application folder
(see below).
&lt;/p&gt;
&lt;h5&gt;
&lt;br&gt;
Application Flow
&lt;/h5&gt;
&lt;p&gt;
- Application&amp;nbsp;has a single page (Default.aspx)&amp;nbsp;containing the player control
and&amp;nbsp;file a system browser (Controls/PlayerControl.ascx and Controls/PlayerControl.ascx.cs). 
&lt;br&gt;
- After user selected a folder with MP3 files, file system browser tree gets hidden
and&amp;nbsp;player control&amp;nbsp;is re-rendered to point to the dynamically-generated
playlist representing selected folder.&lt;br&gt;
- Player control requests dynamic playlist and custom IHttpHandler (AppCode/PlaylistClass.cs
and AppCode/xspf.cs)&amp;nbsp;serves XSPF-encoded playlist containing songs in the selected
folder. Playlist contains song information retrieved from songs' ID3v2 and ID3v1 MP3
tags.&lt;br&gt;
- Player plays songs one by one: requesting each one from the custom IHttpHandler
(Handlers/Song.ashx)&amp;nbsp;serving songs from local file system. After song started
playing player also requests song album artwork (cover art) from custom IHttpHandler
(Handlers/CoverArt.ashx)&amp;nbsp;which serves image extracted from song's ID3v2 tag.&lt;br&gt;
&lt;/p&gt;
&lt;h5&gt;Debugging
&lt;/h5&gt;
&lt;p&gt;
I had troubles&amp;nbsp;getting Visual Studio 2005 internal web server to serve Flash
component. I switched to UltiDev Cassini for debugging and that has solved the problem.
Debugging with UltiDev Cassini is probably a good idea anyway since the application
is eventually going to run&amp;nbsp;under UltiDev Cassini. 
&lt;/p&gt;
&lt;p&gt;
To switch to UltiDev Cassini, bring up ASP.NET application's properties, select Start
Options of the left, and check "Start External Program" radio-button. Enter "C:\Program
Files\UltiDev\Cassini Web Server for ASP.NET 2.0\UltiDevCassinWebServer2.exe" as the
program to be&amp;nbsp;used for debugging, and specify "/run c:\UltiDevMusicPlayerSample\WebApp
Default.aspx 4125" (no quotes) as command line arguments. If you have unzipped solution
to a folder other than "C:\", then you will need to modify c:\UltiDevMusicPlayerSample\WebApp
part of the command line arguments to point to the actual application location.&lt;br&gt;
&lt;img height=450 alt=VS2005DebugSettingsForMP3App.PNG src="content/binary/VS2005DebugSettingsForMP3App.PNG" width=787 border=0&gt;
&lt;/p&gt;
&lt;h5&gt;
&lt;br&gt;
Setup Project
&lt;/h5&gt;
&lt;p&gt;
Unlike regular ASP.NET application, this application is using regular (non-web) setup
project for installer implementation. The reason for that is the Visual Studio web
setup project is actually IIS setup project. Since we are using UltiDev Cassini instead
of IIS, regular setup project is required instead.
&lt;/p&gt;
&lt;p&gt;
Setup project packs UltiDev Cassini into Setup.exe bootstrapper and ensures application
is registered with UltiDev Cassini during installation process and gets unregistered
during uninstallation.
&lt;/p&gt;
&lt;p&gt;
Creating a setup project for ASP.NET application bundled with UltiDev Cassini is not
complex, but if you need step-by-step guide, please refer to this &lt;a href="http://ultidev.com/products/Cassini/CassiniRedistirbWithVS2005.htm"&gt;walk-through&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;IMPORTANT:&lt;/strong&gt; When installing the application, don't just click the
.MSI file. You will need to &lt;strong&gt;run Setup.exe&lt;/strong&gt; to ensure UltiDev Cassini
web server gets installed on target system. This is especially true on Vista, where &lt;a href="PermaLink,guid,5bbdbe9b-ffe9-491f-bc55-c8f13b371850.aspx"&gt;clicking
.MSI and running Setup.exe are not nearly as functionally close&lt;/a&gt; as it used to
be on Windows XP.
&lt;/p&gt;
&lt;p&gt;
Build &amp;amp; Enjoy!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=92fb8609-995a-4c0b-bd7b-48eb8182c366" /&gt;</description>
      <comments>http://vladsnotes.hrybok.com/CommentView,guid,92fb8609-995a-4c0b-bd7b-48eb8182c366.aspx</comments>
      <category>ASP.NET;Cassini Web Server;Digital Home;Sofware Development</category>
    </item>
    <item>
      <trackback:ping>http://vladsnotes.hrybok.com/Trackback.aspx?guid=2884fdba-57bb-4c69-b5ff-06b1e4e9c2d8</trackback:ping>
      <pingback:server>http://vladsnotes.hrybok.com/pingback.aspx</pingback:server>
      <pingback:target>http://vladsnotes.hrybok.com/PermaLink,guid,2884fdba-57bb-4c69-b5ff-06b1e4e9c2d8.aspx</pingback:target>
      <dc:creator>Vlad Hrybok</dc:creator>
      <wfw:comment>http://vladsnotes.hrybok.com/CommentView,guid,2884fdba-57bb-4c69-b5ff-06b1e4e9c2d8.aspx</wfw:comment>
      <wfw:commentRss>http://vladsnotes.hrybok.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2884fdba-57bb-4c69-b5ff-06b1e4e9c2d8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently I've been working on the small ASP.NET 2.0 app that has a page containing
Macromedia (now Adobe) Flash object. When I tried debugging it with Visual Studio
2005 and its internal web server, the Flash piece has never been loaded by Internet
Explorer - I am not even sure whether it was the Flash player that failed to load
or the .SWF file. I wonder if anyone else had this issue. I could not check which
component was not loaded because WebDev.WebServer2.exe serves only local applications,
and I could not use an http tracer to see which request gets stuck.
</p>
        <p>
I worked around the issue by switching to our own <a href="http://ultidev.com/products/Cassini/index.htm">UltiDev
Cassini for ASP.NET 2.0</a> for <a href="http://ultidev.com/products/Cassini/CassiniDevGuide.htm#Debugging">application
debugging</a>. It served all the bits and pieces required by Flash without
a hitch.
</p>
        <img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=2884fdba-57bb-4c69-b5ff-06b1e4e9c2d8" />
      </body>
      <title>Problem with Macromedia (Adobe) Flash Object on the ASP.NET Page Served by Visual Studio 2005 WebDev.WebServer2.exe</title>
      <guid isPermaLink="false">http://vladsnotes.hrybok.com/PermaLink,guid,2884fdba-57bb-4c69-b5ff-06b1e4e9c2d8.aspx</guid>
      <link>http://vladsnotes.hrybok.com/PermaLink,guid,2884fdba-57bb-4c69-b5ff-06b1e4e9c2d8.aspx</link>
      <pubDate>Mon, 05 Mar 2007 21:22:37 GMT</pubDate>
      <description>&lt;p&gt;
Recently I've been working on the small ASP.NET 2.0 app that has a page containing
Macromedia (now Adobe) Flash object. When I tried debugging it with Visual Studio
2005 and its internal web server, the Flash piece&amp;nbsp;has never been loaded by Internet
Explorer - I am not even sure whether it was the Flash player that failed to load
or the .SWF file. I wonder if anyone else had this issue. I could&amp;nbsp;not check which
component was not loaded because WebDev.WebServer2.exe serves only local applications,
and I could not use&amp;nbsp;an http tracer&amp;nbsp;to see which request gets stuck.
&lt;/p&gt;
&lt;p&gt;
I worked around&amp;nbsp;the issue by&amp;nbsp;switching to&amp;nbsp;our own &lt;a href="http://ultidev.com/products/Cassini/index.htm"&gt;UltiDev
Cassini for ASP.NET 2.0&lt;/a&gt; for &lt;a href="http://ultidev.com/products/Cassini/CassiniDevGuide.htm#Debugging"&gt;application
debugging&lt;/a&gt;. It served all the bits and pieces&amp;nbsp;required by&amp;nbsp;Flash without
a hitch.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=2884fdba-57bb-4c69-b5ff-06b1e4e9c2d8" /&gt;</description>
      <comments>http://vladsnotes.hrybok.com/CommentView,guid,2884fdba-57bb-4c69-b5ff-06b1e4e9c2d8.aspx</comments>
      <category>ASP.NET;Cassini Web Server;IIS7;Sofware Development;Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://vladsnotes.hrybok.com/Trackback.aspx?guid=7017a381-30b2-4a94-bcd4-ac17c799cf40</trackback:ping>
      <pingback:server>http://vladsnotes.hrybok.com/pingback.aspx</pingback:server>
      <pingback:target>http://vladsnotes.hrybok.com/PermaLink,guid,7017a381-30b2-4a94-bcd4-ac17c799cf40.aspx</pingback:target>
      <dc:creator>Vlad Hrybok</dc:creator>
      <wfw:comment>http://vladsnotes.hrybok.com/CommentView,guid,7017a381-30b2-4a94-bcd4-ac17c799cf40.aspx</wfw:comment>
      <wfw:commentRss>http://vladsnotes.hrybok.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7017a381-30b2-4a94-bcd4-ac17c799cf40</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In attempt to create a less dry than your usual "Hello World" ASP.NET application
to showcase <a href="http://ultidev.com/Products/Cassini/">UltiDev Cassini Web
Server</a>, I decided to write a simple web-based MP3 player application using
Maсromedia (now Adobe) Flash. I was very surprised by how long and frustrating
was my search for a free .NET-based API allowing programmatic access to ID3 tags in
MP3 files from C# and VB.NET. I started working with something I found on Codeproject.com,
but that piece turned out to be buggy beyond any degree of practicality. My second
sweep across Internet yielded a much better (if only somewhat over-engineered) solution
- the <a href="http://home.fuse.net/honnert/hundred/UltraID3Lib/">UltraID3Lib</a>.
Its <strong>UltraID3</strong> class is the starting point of the journey. The library
worked out for me very well. Thumbs up.
</p>
        <img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=7017a381-30b2-4a94-bcd4-ac17c799cf40" />
      </body>
      <title>.NET API for Programmatic MP3 Tag (ID3v1 and ID3v2) Access and Modifications</title>
      <guid isPermaLink="false">http://vladsnotes.hrybok.com/PermaLink,guid,7017a381-30b2-4a94-bcd4-ac17c799cf40.aspx</guid>
      <link>http://vladsnotes.hrybok.com/PermaLink,guid,7017a381-30b2-4a94-bcd4-ac17c799cf40.aspx</link>
      <pubDate>Wed, 28 Feb 2007 04:37:38 GMT</pubDate>
      <description>&lt;p&gt;
In attempt&amp;nbsp;to create a less dry than your usual "Hello World" ASP.NET application
to&amp;nbsp;showcase &lt;a href="http://ultidev.com/Products/Cassini/"&gt;UltiDev Cassini Web
Server&lt;/a&gt;, I decided to write a simple web-based&amp;nbsp;MP3 player application using
Maсromedia (now Adobe)&amp;nbsp;Flash. I was very surprised by how long and frustrating
was my search for a free .NET-based API allowing programmatic access to ID3 tags in
MP3 files from C# and VB.NET. I started working with something I found on Codeproject.com,
but that piece turned out to be buggy beyond any degree of practicality. My second
sweep across Internet yielded a much better (if only somewhat over-engineered)&amp;nbsp;solution
- the &lt;a href="http://home.fuse.net/honnert/hundred/UltraID3Lib/"&gt;UltraID3Lib&lt;/a&gt;.
Its &lt;strong&gt;UltraID3&lt;/strong&gt; class is the starting point of the journey. The library
worked out for me very well. Thumbs up.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=7017a381-30b2-4a94-bcd4-ac17c799cf40" /&gt;</description>
      <comments>http://vladsnotes.hrybok.com/CommentView,guid,7017a381-30b2-4a94-bcd4-ac17c799cf40.aspx</comments>
      <category>.NET Programming;ASP.NET 1.1;Cassini Web Server;Sofware Development</category>
    </item>
    <item>
      <trackback:ping>http://vladsnotes.hrybok.com/Trackback.aspx?guid=80e3b19d-aa13-4dfa-8690-30ef7641cb2e</trackback:ping>
      <pingback:server>http://vladsnotes.hrybok.com/pingback.aspx</pingback:server>
      <pingback:target>http://vladsnotes.hrybok.com/PermaLink,guid,80e3b19d-aa13-4dfa-8690-30ef7641cb2e.aspx</pingback:target>
      <dc:creator>Vlad Hrybok</dc:creator>
      <wfw:comment>http://vladsnotes.hrybok.com/CommentView,guid,80e3b19d-aa13-4dfa-8690-30ef7641cb2e.aspx</wfw:comment>
      <wfw:commentRss>http://vladsnotes.hrybok.com/SyndicationService.asmx/GetEntryCommentsRss?guid=80e3b19d-aa13-4dfa-8690-30ef7641cb2e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here's how it works: for the last two years we at <a href="http://UltiDev.com">UltiDev
LLC</a> work mainly on <a href="http://UltiDev.com/Products/HttpVPN/">HttpVPN</a> -
our flagship product and the main reason why our company exists. Once upon a
time we've decided that making a simple redistributable web server software would
be a great value-added piece completing HttpVPN offering and allowing us
to probe prospective market for HttpVPN, gather contact information of people who
may by interested in HttpVPN and setup our QA, build and release processes along
the way. The experiment turned out to be as successful and we hoped it would be. We've
got about 15,000 (and counting) installed <a href="http://UltiDev.com/Products/Cassini/">UltiDev
Cassini Web Server</a> runtimes worldwide and we are receiving overwhelmingly positive
feedback from users. All this also means that about every six months we have our Cassini
task tracker full enough to suspend HttpVPN work for a few weeks and do another release
or UltiDev Cassini. This time was no exception.
</p>
        <p>
Although we always hope to keep our Cassini mid-version upgrade development cycle
limited to three weeks, it took us usual five weeks to fix, test, fix again, test
again and release the <a href="http://www.ultidev.com/Products/Cassini/CassiniReleaseNotes.htm">latest
version</a> of UltiDev Cassini Web Server. This release had two main points of focus:
to eliminate all known installation/registration hurdles and to make UltiDev Cassini
compatible with all 64-bit Windows platforms. 64 bit OSes are gaining popularity
very rapidly thanks to the fact that most of the recent (and even not so recent -
think Pentium D) CPUs from AMD and Intel are x64-compatible. Windows Vista comes in
32- and 64-bit versions right from the start, while existing Windows XP Pro x64 and
Windows 2003 Server 64-bit were somewhat obscure because they were released before
64-bit CPUs hit the mainstream. Nowadays it's pretty much impossible to buy a CPU
that does not have x64 compatibility. Hoping to please Vista 32 and 64 bit users we
made sure that our latest version of Cassini runs smoothly on all the latest multicore
32 and 64 bit CPUs and supports entire (reasonable) line of Windows operating systems:
from Windows 2000 to Vista.
</p>
        <p>
Now, whether you own an older version of our tiny but powerful UltiDev Cassini, or
you never tried it - go ahead and <a href="http://www.ultidev.com/download/">download
the latest version</a>. If you owned old version - most of the known issues
will go away (or if you had none you will be less likely to face issues in the future).
If you never saw our Cassini - it's a perfect time to spend 20 minutes on something
you probably will go "wow!" about. Check it out now!
</p>
        <img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=80e3b19d-aa13-4dfa-8690-30ef7641cb2e" />
      </body>
      <title>Next version of UltiDev Cassini ASP.NET Web Server is available for download!</title>
      <guid isPermaLink="false">http://vladsnotes.hrybok.com/PermaLink,guid,80e3b19d-aa13-4dfa-8690-30ef7641cb2e.aspx</guid>
      <link>http://vladsnotes.hrybok.com/PermaLink,guid,80e3b19d-aa13-4dfa-8690-30ef7641cb2e.aspx</link>
      <pubDate>Sat, 10 Feb 2007 20:57:09 GMT</pubDate>
      <description>&lt;p&gt;
Here's how it works: for the last two years we at &lt;a href="http://UltiDev.com"&gt;UltiDev
LLC&lt;/a&gt; work mainly on &lt;a href="http://UltiDev.com/Products/HttpVPN/"&gt;HttpVPN&lt;/a&gt; -
our flagship&amp;nbsp;product and the main reason why our company exists. Once upon a
time we've decided that making a simple redistributable web server software would
be a&amp;nbsp;great value-added piece&amp;nbsp;completing HttpVPN offering and allowing us
to probe prospective market for HttpVPN, gather contact information of people who
may&amp;nbsp;by interested in HttpVPN and setup our QA, build and release processes along
the way. The experiment turned out to be as successful and we hoped it would be. We've
got about 15,000 (and counting) installed &lt;a href="http://UltiDev.com/Products/Cassini/"&gt;UltiDev
Cassini Web Server&lt;/a&gt; runtimes worldwide and we are receiving overwhelmingly positive
feedback from users. All this also means that about every six months we have our Cassini
task tracker full enough to suspend HttpVPN work for a few weeks and do another release
or UltiDev Cassini. This time was no exception.
&lt;/p&gt;
&lt;p&gt;
Although we always hope to keep our Cassini&amp;nbsp;mid-version upgrade development cycle
limited to three&amp;nbsp;weeks, it took us usual five weeks to fix, test, fix again,&amp;nbsp;test
again and release the &lt;a href="http://www.ultidev.com/Products/Cassini/CassiniReleaseNotes.htm"&gt;latest
version&lt;/a&gt; of UltiDev Cassini Web Server. This release had two main points of focus:
to eliminate all known installation/registration hurdles and to make UltiDev Cassini
compatible with all 64-bit Windows platforms. 64 bit&amp;nbsp;OSes&amp;nbsp;are gaining popularity
very rapidly thanks to the fact that most of the recent (and even not so recent -
think Pentium D) CPUs from AMD and Intel are x64-compatible. Windows Vista comes in
32- and 64-bit versions right from the start, while existing Windows XP Pro x64 and
Windows 2003 Server 64-bit were somewhat obscure because they were released before
64-bit CPUs hit the mainstream. Nowadays it's pretty much impossible to buy a CPU
that does not have x64 compatibility. Hoping to please Vista 32 and 64 bit users we
made sure that our latest version of Cassini runs smoothly on all the latest multicore
32 and 64 bit CPUs and supports entire (reasonable) line of Windows operating systems:
from Windows 2000 to Vista.
&lt;/p&gt;
&lt;p&gt;
Now, whether you own an older version of our tiny but powerful UltiDev Cassini, or
you never tried it - go ahead and &lt;a href="http://www.ultidev.com/download/"&gt;download
the latest version&lt;/a&gt;. If you owned old&amp;nbsp;version -&amp;nbsp;most of the known issues
will go away (or if you had none you will be less likely to face issues in the future).
If you never saw our Cassini - it's a perfect time to spend 20 minutes on something
you probably will go "wow!" about. Check it out now!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=80e3b19d-aa13-4dfa-8690-30ef7641cb2e" /&gt;</description>
      <comments>http://vladsnotes.hrybok.com/CommentView,guid,80e3b19d-aa13-4dfa-8690-30ef7641cb2e.aspx</comments>
      <category>ASP.NET;Cassini Web Server;Digital Home;Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://vladsnotes.hrybok.com/Trackback.aspx?guid=2f68350c-fa77-4d77-9490-5cb9efc22615</trackback:ping>
      <pingback:server>http://vladsnotes.hrybok.com/pingback.aspx</pingback:server>
      <pingback:target>http://vladsnotes.hrybok.com/PermaLink,guid,2f68350c-fa77-4d77-9490-5cb9efc22615.aspx</pingback:target>
      <dc:creator>Vlad Hrybok</dc:creator>
      <wfw:commentRss>http://vladsnotes.hrybok.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2f68350c-fa77-4d77-9490-5cb9efc22615</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In the brave new world, where nearly all CPUs are <a href="http://www.newegg.com/Product/ProductList.asp?Submit=Property&amp;Subcategory=343&amp;Description=&amp;Type=&amp;srchInDesc=&amp;MinPrice=&amp;MaxPrice=&amp;PropertyCodeValue=2663%3A16752">64
bit</a>, and Vista x64 is poised to have a large market share, how many ASP.NET 1.1
developers will find themselves in the situation where IIS7 running on x64 OS can't
create an application pool for .NET Framework 1.1, therefore making it impossible
to debug ASP.NET 1.1 applications under IIS7 using Visual Studio.NET 2003? All because when
looking for available ASP.NET versions, IIS7 is probably looking into 64 bit .NET
Framework folder - "C:\Windows\Microsoft.NET\Framework64", which only has 2.0
and 3.0 versions in it. Not knowing this would be the case, I recently installed
Vista x64 on my newly upgraded Dev box and almost fainted when I realized I can't
use VS.NET 2003 to debug legacy ASP.NET 1.1 apps. It took me a while to realize that
our <a href="http://www.ultidev.com/download/">own Cassini Web Server for ASP.NET
1.1</a> may work just fine, because it has its own routines for discovering location
of .NET Framework 1.1 files, and it can be used for debugging of ASP.NET 1.1
application in VS.NET 2003. I tried it a few days ago, and sure enough our little
Cassini saved the day - Visual Studio.NET 2003 ran an ASP.NET 1.1 app on our <a href="http://www.ultidev.com/products/Cassini/CassiniDevGuide.htm#Debugging">Cassini
in Debug mode</a> without a hitch!
</p>
        <img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=2f68350c-fa77-4d77-9490-5cb9efc22615" />
      </body>
      <title>Visual Studio.NET 2003, ASP.NET 1.1 and IIS7 on Vista x64</title>
      <guid isPermaLink="false">http://vladsnotes.hrybok.com/PermaLink,guid,2f68350c-fa77-4d77-9490-5cb9efc22615.aspx</guid>
      <link>http://vladsnotes.hrybok.com/PermaLink,guid,2f68350c-fa77-4d77-9490-5cb9efc22615.aspx</link>
      <pubDate>Sun, 17 Dec 2006 20:35:13 GMT</pubDate>
      <description>&lt;p&gt;
In the brave new world, where nearly all CPUs are &lt;a href="http://www.newegg.com/Product/ProductList.asp?Submit=Property&amp;amp;Subcategory=343&amp;amp;Description=&amp;amp;Type=&amp;amp;srchInDesc=&amp;amp;MinPrice=&amp;amp;MaxPrice=&amp;amp;PropertyCodeValue=2663%3A16752"&gt;64
bit&lt;/a&gt;, and Vista x64 is poised to have a large market share, how many ASP.NET 1.1
developers will find themselves in the situation where IIS7 running on&amp;nbsp;x64 OS&amp;nbsp;can't
create an application pool for .NET Framework 1.1, therefore making it impossible
to debug ASP.NET 1.1 applications under IIS7 using Visual Studio.NET 2003? All because&amp;nbsp;when
looking for available ASP.NET versions, IIS7 is probably looking into 64 bit&amp;nbsp;.NET
Framework&amp;nbsp;folder - "C:\Windows\Microsoft.NET\Framework64", which only has&amp;nbsp;2.0
and 3.0&amp;nbsp;versions in it. Not knowing this would be the case, I recently installed
Vista x64 on my newly upgraded Dev box and almost fainted when I realized I can't
use VS.NET 2003 to debug legacy ASP.NET 1.1 apps. It took me a while to realize that
our &lt;a href="http://www.ultidev.com/download/"&gt;own Cassini Web Server for ASP.NET
1.1&lt;/a&gt; may work just fine, because it has its own routines for discovering location
of .NET Framework 1.1 files, and it can be used for debugging of&amp;nbsp;ASP.NET 1.1
application in VS.NET 2003. I tried it a few days ago, and sure enough&amp;nbsp;our little
Cassini saved the day - Visual Studio.NET 2003 ran an ASP.NET 1.1 app on our &lt;a href="http://www.ultidev.com/products/Cassini/CassiniDevGuide.htm#Debugging"&gt;Cassini
in Debug mode&lt;/a&gt; without a hitch!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vladsnotes.hrybok.com/aggbug.ashx?id=2f68350c-fa77-4d77-9490-5cb9efc22615" /&gt;</description>
      <comments>http://vladsnotes.hrybok.com/CommentView,guid,2f68350c-fa77-4d77-9490-5cb9efc22615.aspx</comments>
      <category>ASP.NET 1.1;Cassini Web Server;IIS7;Vista;Visual Studio.NET 2003;x64;.NET Framework 1.1</category>
    </item>
  </channel>
</rss>