<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.iis.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:cs="http://blogs.iis.net/"><channel><title>The Official Microsoft IIS Site</title><link>http://blogs.iis.net/</link><description>The platform that enables you to build rich, interactive communities</description><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Troubleshoot – My PHP script is timing out</title><link>http://blogs.iis.net/donraman/archive/2010/02/08/troubleshoot-my-php-script-is-timing-out.aspx</link><pubDate>Mon, 08 Feb 2010 01:23:15 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3665758</guid><dc:creator>don.raman</dc:creator><slash:comments>11</slash:comments><description>&lt;p align="justify"&gt;I hear a lot about the problem where web server (IIS) throws an error saying that PHP script has timed out in our &lt;a href="http://forums.iis.net/" target="_blank"&gt;forums&lt;/a&gt;. Let’s try to understand the reason behind this. I will be using a Windows 7 Enterprise machine (having IIS 7.5) to explain this but this should be applicable to Windows 2008/Windows Vista too. The same can be told true for Windows 2003/Windows XP with some difference like IIS stores FastCGI configuration in fcgiext.ini file rather than application meta-base. However the concept should be exactly similar.&lt;/p&gt;  &lt;p align="justify"&gt;Let me now summarize some of the IIS FastCGI settings and PHP INI configuration directive to ensure that everyone is on the same page and which are most important for this discussion.&lt;/p&gt;  &lt;p align="justify"&gt;Two important FastCGI settings:&lt;/p&gt;  &lt;li&gt;   &lt;div align="justify"&gt;&lt;i&gt;ActivityTimeout&lt;/i&gt; – This is the number of seconds that the FastCGI handler waits for I/O activity from a process before it is terminated. At some place you will also find this as being documented as number of seconds PHP-CGI process can run without communicating to IIS.&lt;/div&gt; &lt;/li&gt;  &lt;li&gt;   &lt;div align="justify"&gt;&lt;i&gt;RequestTimeout&lt;/i&gt; – This is the maximum amount of time in seconds that a FastCGI process is allowed to handle a request before it is terminated.&lt;/div&gt; &lt;/li&gt;  &lt;p align="justify"&gt;Important PHP INI directive for this discussion:&lt;/p&gt;  &lt;li&gt;   &lt;div align="justify"&gt;&lt;em&gt;max_execution_time – &lt;/em&gt;This is the maximum time in seconds a script is allowed to run before it is terminated by parser. Details can be seen at &lt;a title="http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time" href="http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time"&gt;http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time&lt;/a&gt;.&lt;/div&gt; &lt;/li&gt;  &lt;p align="justify"&gt;All the above three impacts your script execution time. Ideally you will have the value of RequestTimeout greater than or equal to ActivityTimeout. Well this is not a hard rule but going by meaning of these two timeouts it makes sense to do this. Assume you are uploading a file of size ‘X’ MB and it takes 500 second to upload it (assuming PHP is configured properly to allow upload of files and so the size of ‘X’ MB is also allowed) and you have below value for the two timeouts:&lt;/p&gt;  &lt;p align="justify"&gt;ActivityTimeout=501&lt;/p&gt;  &lt;p align="justify"&gt;RequestTimeout=400&lt;/p&gt;  &lt;p align="justify"&gt;This configuration will result into request timeout while uploading the file. The reason is that though an I/O operation (in this case file upload) is allowed for 501 seconds which is perfectly fine for this case, request time out is less than 501 (and is at 400) and so FastCGI will encounter a request timeout. Remember this will be done by the web server (IIS here) and not PHP. So setting the value of RequestTimeout higher than ActivityTimeout makes more sense.&lt;/p&gt;  &lt;p align="justify"&gt;However assume your max_execution_time is set to 300 seconds and you are running a PHP script which executes for time more than 300 seconds and FastCGI timeout settings are same as above. This time PHP will terminate itself.&lt;/p&gt;  &lt;p align="justify"&gt;This implies that (assuming you have RequestTimeout set to a value higher than ActivityTimeout) you script will run maximum for time in seconds which is configured for max_execution_time or RequestTimeout whichever is less.&lt;/p&gt;  &lt;p align="justify"&gt;This should help you configuring the PHP script to run for a longer period of time.&lt;/p&gt;  &lt;p align="justify"&gt;Some Frequently asked question&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;I am changing the fastcgi.ini file or php.ini file but settings are not getting effected on XP/2k3 or I am changing applicationhost.config or php.ini on a IIS7 machine and changes are not getting effected.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;Please recycle the application pool or restart the server to make the FastCGI/PHP process read the new settings. If you are using latest FastCGI and you do not want to restart the application and want changes to be picked up on it’s own you can as well use the feature called ‘Monitor Changes to File’. Details about this can be found at &lt;a title="http://blogs.iis.net/ksingla/archive/2009/01/22/improvements-to-fastcgi-in-iis-7-5.aspx" href="http://blogs.iis.net/ksingla/archive/2009/01/22/improvements-to-fastcgi-in-iis-7-5.aspx"&gt;http://blogs.iis.net/ksingla/archive/2009/01/22/improvements-to-fastcgi-in-iis-7-5.aspx&lt;/a&gt; for IIS7.5 and at &lt;a title="http://learn.iis.net/page.aspx/248/configure-the-fastcgi-extension-for-iis-60/" href="http://learn.iis.net/page.aspx/248/configure-the-fastcgi-extension-for-iis-60/"&gt;http://learn.iis.net/page.aspx/248/configure-the-fastcgi-extension-for-iis-60/&lt;/a&gt; for IIS6.0. For information regarding if this feature is supported on your configuration or not please refer to blog post at &lt;a title="http://blogs.iis.net/ruslany/archive/2010/02/05/fastcgi-module-differences-across-iis-versions.aspx" href="http://blogs.iis.net/ruslany/archive/2010/02/05/fastcgi-module-differences-across-iis-versions.aspx"&gt;http://blogs.iis.net/ruslany/archive/2010/02/05/fastcgi-module-differences-across-iis-versions.aspx&lt;/a&gt;. We are working to make the features available across all configuration however.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;But I would like to set the FastCGI settings different for different sites. How do I do that for IIS6.0?&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;The answer to this is well explained in the comment section of fcgiext.ini file. I am pasting it below for easy reference.&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;; The main section of the fcgiext.ini file is the [types] section.&amp;#160; This     &lt;br /&gt;; section associates file extensions from the URL with FastCGI applications.      &lt;br /&gt;;      &lt;br /&gt;; The general syntax is a follows:      &lt;br /&gt;;      &lt;br /&gt;; [types]      &lt;br /&gt;; abc=Application 1      &lt;br /&gt;; def:/lm/w3svc/1701187997/root/app1=Application 2      &lt;br /&gt;; *:/lm/w3svc/1701187997/root/app1=Application 3      &lt;br /&gt;; def:1701187997=Application 4      &lt;br /&gt;; *:1701187997=Application 5      &lt;br /&gt;; def=Application 6      &lt;br /&gt;; *=Application 7      &lt;br /&gt;;      &lt;br /&gt;; The above example consists of 7 mappings mapped as follows:      &lt;br /&gt;;      &lt;br /&gt;; - The file extension &amp;quot;abc&amp;quot; is associated with the FastCGI application      &lt;br /&gt;;&amp;#160;&amp;#160; named &amp;quot;Application 1&amp;quot;.      &lt;br /&gt;;      &lt;br /&gt;; - The file extension &amp;quot;def&amp;quot; is associated with the FastCGI application      &lt;br /&gt;;&amp;#160;&amp;#160; named &amp;quot;Application 2&amp;quot;, but only for requests made to the application       &lt;br /&gt;;&amp;#160;&amp;#160; /app1 under site with the numeric identifier &amp;quot;1701187997&amp;quot;.&amp;#160; Note that      &lt;br /&gt;;&amp;#160;&amp;#160; application specific mappings override site, extension specific mappings.      &lt;br /&gt;;      &lt;br /&gt;; - Requests to the application /app1 under web site with the identifier      &lt;br /&gt;;&amp;#160;&amp;#160; &amp;quot;1701187997&amp;quot; with a file extension other than &amp;quot;def&amp;quot; are associated      &lt;br /&gt;;&amp;#160;&amp;#160; with the FastCGI application named &amp;quot;Application 3&amp;quot;.      &lt;br /&gt;;      &lt;br /&gt;; - The file extension &amp;quot;def&amp;quot; is associated with the FastCGI application      &lt;br /&gt;;&amp;#160;&amp;#160; named &amp;quot;Application 4&amp;quot;, but only for requests made to the applications      &lt;br /&gt;;&amp;#160;&amp;#160; other than /app1 under web site with the numeric identifier      &lt;br /&gt;;&amp;#160;&amp;#160; &amp;quot;1701187997&amp;quot;. Note that site specific mappings override non-site      &lt;br /&gt;;&amp;#160;&amp;#160; specific mappings.      &lt;br /&gt;;      &lt;br /&gt;; - Requests to the applications other than /app1 under web site with the      &lt;br /&gt;;&amp;#160;&amp;#160; identifier &amp;quot;1701187997&amp;quot; with a file extensions other than &amp;quot;def&amp;quot; are       &lt;br /&gt;;&amp;#160;&amp;#160; associated with the FastCGI application named &amp;quot;Application 5&amp;quot;.      &lt;br /&gt;;      &lt;br /&gt;; - The file extension &amp;quot;def&amp;quot; is associated with the FastCGI application      &lt;br /&gt;;&amp;#160;&amp;#160; named &amp;quot;Application 6&amp;quot; for requests which are not for site with numeric      &lt;br /&gt;;&amp;#160;&amp;#160; identifier &amp;quot;1701187997&amp;quot;.      &lt;br /&gt;;      &lt;br /&gt;; - Requests with a file extension that does not have a specific mapping      &lt;br /&gt;;&amp;#160;&amp;#160; are associated with the FastCGI application named &amp;quot;Application 7&amp;quot;.      &lt;br /&gt;;      &lt;br /&gt;; Note that application names are ASCII and should generally contain only      &lt;br /&gt;; alphanumeric characters, and spaces are allowed.&amp;#160; Application names are      &lt;br /&gt;; case-insensitive.      &lt;br /&gt;;      &lt;br /&gt;; Note also that it is allowed for multiple mappings to be associated with      &lt;br /&gt;; the same FastCGI application.      &lt;br /&gt;;      &lt;br /&gt;; The following is a sample application section.&amp;#160; Note that the name of      &lt;br /&gt;; the section must correspond to at least one mapping in the [types] section      &lt;br /&gt;; in order to be used:&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;[Types]       &lt;br /&gt;php:185983572=Site1        &lt;br /&gt;php:237389121=Site2        &lt;br /&gt;php=AllOther &lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;[Site1]       &lt;br /&gt;ExePath=C:\php\php-cgi.exe        &lt;br /&gt;ActivityTimeout=90        &lt;br /&gt;RequestTimeout=120 &lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;[Site2]       &lt;br /&gt;ExePath=C:\php\php-cgi.exe        &lt;br /&gt;ActivityTimeout=60        &lt;br /&gt;RequestTimeout=90 &lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;[AllOther]       &lt;br /&gt;ExePath=C:\php\php-cgi.exe        &lt;br /&gt;ActivityTimeout=70        &lt;br /&gt;RequestTimeout=100&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;em&gt;This will ensure different values of activity and request timeouts for Site1 and Site2 which can be differentiated by site’s numeric id 185983572 and 237389121 respectively. For all other sites, the configuration setting under [AllOther] section will be applied.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Okay, how to achieve the above thing on IIS7?&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;Please use the link at &lt;a title="http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/#Per-site_PHP_configuration" href="http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/#Per-site_PHP_configuration"&gt;http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/#Per-site_PHP_configuration&lt;/a&gt; to get the details.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;How about having different PHP INI setting (here max_execution_time) for different sites?&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;If you are on IIS6 specify Arguments=-d max_execution_time=600 for Site1 in the above example and Arguments=-d max_execution_time=600 for Site2 in the above example and PHP-CGI.EXE will be passed different values for rule matching Site1 and Site2 respectively. For all other sites default value of max_execution_time or one defined in PHP.INI file will be used. If you are using PHP5.3 and above, you can also use PHP_INI_PERDIR for doing this isolation. The blog at &lt;a title="http://blogs.iis.net/donraman/archive/2009/11/08/enabling-wincache-on-per-site-basis.aspx" href="http://blogs.iis.net/donraman/archive/2009/11/08/enabling-wincache-on-per-site-basis.aspx"&gt;http://blogs.iis.net/donraman/archive/2009/11/08/enabling-wincache-on-per-site-basis.aspx&lt;/a&gt; explains it for how to do it for WINCACHE directives but can be used as a guide to set any PHP INI directives so far as that directive supports PHP_INI_PERDIR configuration.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Is there a limit on maximum values for the above settings? If yes, how can I find the maximum values? And how do I change it?&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;&lt;em&gt;Yes, there is a limit to maximum value. For IIS7 it is present in the IIS schema file. The schema file can be found at %WINDIR%\system32\inetsrv\config\schema and the file is named IIS_schema.xml. Look at section named &amp;quot;system.webServer/fastCgi&amp;quot; for defaults. It seems the maximum value for these two FastCGI settings is 70 days on Windows 7. And yes if you are administrator on IIS7 box, you can change the default values but I would advise not to do that. For IIS6 look at the file named MBSchema.xml inside folder %SystemRoot%\System32\Inetsrv.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Hopefully all this information will help you from getting around timeout problem for PHP scripts. Thanks for the patient reading and till the time we meet again ‘Good Bye’.&lt;/p&gt;  &lt;p align="justify"&gt;Thanks,&lt;/p&gt;  &lt;p align="justify"&gt;Don.&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3665758" width="1" height="1"&gt;</description><cs:applicationKey>donraman</cs:applicationKey><category domain="http://blogs.iis.net/donraman/archive/tags/FastCGI/default.aspx">FastCGI</category><category domain="http://blogs.iis.net/donraman/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.iis.net/donraman/archive/tags/PHP/default.aspx">PHP</category><category domain="http://blogs.iis.net/donraman/archive/tags/PHP+Script+TimeOut/default.aspx">PHP Script TimeOut</category></item><item><title>WebDeployment Tool Now Works With Credential Store</title><link>http://blogs.iis.net/jamescoo/archive/2010/02/07/webdeployment-tool-now-works-with-credential-store.aspx</link><pubDate>Sun, 07 Feb 2010 01:00:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3664845</guid><dc:creator>Jamescoo</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;The WebDeployment tool will be releasing a brand new feature in the newest update of version 1.1.&amp;nbsp; This new feature will allow users to store their passwords in Window’s credential store on command-line using WebDeploy and / or access credential stored password information via command-line.&amp;nbsp; This is very useful if you do not want to expose your password on command-line and keep it from showing up in your any log files that may capture command line input.&lt;/P&gt;
&lt;P&gt;The way to accomplish this all through WebDeploy is through the use of two new switches ( straight from command-line help ):&lt;/P&gt;
&lt;P&gt;getCredentials=&amp;lt;target&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Target identifies the credentials (username &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and password) in the Windows Credential &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Manager to be used when connecting to &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; remote computer.&lt;/P&gt;
&lt;P&gt;storeCredentials=&amp;lt;target&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Username and password will be stored in the &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Windows Credential Manager under the target &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifier.&lt;/P&gt;
&lt;P&gt;Example of “storeCredentials” is as follows:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;msdeploy.exe –verb:dump –source:iisapp=”Default Web Site/”,computername=MachineName,username=User,password=Password,storeCredentials=UserCredential&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Now to get the above credential back using the “getCredentials”.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;msdeploy.exe –verb:dump –source:iisapp=”Default Web Site/”,computername=MachineName,getCredentials=UserCredential&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;In the above examples there is a few things to take note of starting with the “storeCredential” switch.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;gt; Regardless of the output of the WebDeploy command-line you are executing, the target credential will be stored if WebDeploy can interpret the command successfully.&lt;/P&gt;
&lt;P&gt;&amp;gt; “storeCredential” is very useful in XP environments as there is no UI for credential store in XP.&lt;/P&gt;
&lt;P&gt;&amp;gt; You can view credentials you store in non-XP operating systems in a UI like this one, ( 2008 example ) by navigating “User Accounts &amp;gt; Manage your network passwords”&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/jamescoo/image_04F245D7.png" mce_href="http://blogs.iis.net/blogs/jamescoo/image_04F245D7.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.iis.net/blogs/jamescoo/image_thumb_2434ECAA.png" width=361 height=354 mce_src="http://blogs.iis.net/blogs/jamescoo/image_thumb_2434ECAA.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Some notes about “getCredentials”:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;gt; You can only do a “getCredentials” on credentials that your user account stored, so if one user stores credentials in the credential store, you will not be able to use this target under a different User who did not store the credentials.&amp;nbsp; And actually, WebDeploy will give no indication whether or not the target existed in the store.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;gt; One possible downside to this is that if you know the credentials of another user account, then you store these credentials, then switch to the context of that user you stored credentials and try to getCredentials with the target name, it will not work.&amp;nbsp; So even though you may be the user whose credentials match with a target in the credential store, you cannot getCredentials on it until you perform a storeCredentials under the current user.&amp;nbsp;&amp;nbsp; This is because each set of stored credentials are in relation to a single user.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3664845" width="1" height="1"&gt;</description><cs:applicationKey>jamescoo</cs:applicationKey><category domain="http://blogs.iis.net/jamescoo/archive/tags/Feature/default.aspx">Feature</category><category domain="http://blogs.iis.net/jamescoo/archive/tags/Credential/default.aspx">Credential</category><category domain="http://blogs.iis.net/jamescoo/archive/tags/New/default.aspx">New</category><category domain="http://blogs.iis.net/jamescoo/archive/tags/Refresh/default.aspx">Refresh</category><category domain="http://blogs.iis.net/jamescoo/archive/tags/WebDeploy/default.aspx">WebDeploy</category></item><item><title>IIS6.0 UI vs. IIS 7.x UI Series: More about Web Service Extensions</title><link>http://blogs.iis.net/nitashav/archive/2010/02/05/iis6-0-ui-vs-iis-7-x-ui-series-more-about-web-service-extensions.aspx</link><pubDate>Sat, 06 Feb 2010 02:46:09 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3663903</guid><dc:creator>NitashaV</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;This week in the blog series (Introduction to the series – &lt;a href="http://blogs.iis.net/nitashav/archive/2010/01/29/iis6-0-ui-vs-iis7-0-iis7-5-ui-series-introduction.aspx"&gt;here&lt;/a&gt;), let’s talk about Web Service Extensions feature in IIS6 UI and compare it to the IIS7.x ISAPI and CGI Restrictions feature.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Web Service Extensions feature in IIS6.0&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;By default, the IIS6.0 server only serves static content. Features like asp, asp.net, server side includes, webdav, front page server extensions would not work unless explicitly enabled. You can configure these features (also known as Web Service Extensions) using the Web Service Extensions node in the inetmgr tree view.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;IIS6 UI – Web Service Extensions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/nitashav/WebServiceExtensions_34A1997D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WebServiceExtensions" border="0" alt="WebServiceExtensions" src="http://blogs.iis.net/blogs/nitashav/WebServiceExtensions_thumb_79D9F0A6.png" width="584" height="396" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To enable, disable a web service extension, you would &lt;/p&gt;  &lt;p&gt;- Launch IIS Manager (run inetmgr)&lt;/p&gt;  &lt;p&gt;- Select and expand the local computer node in the tree view&lt;/p&gt;  &lt;p&gt;- Select&amp;#160; “Web Service Extensions” node in the tree view&lt;/p&gt;  &lt;p&gt;- You can now “Allow” or “Prohibit” any Web Service Extension.&lt;/p&gt;  &lt;p&gt;This UI also lets you Add a new Web Service extension, allow all web service extensions for a specific application and disable (“prohibit”) all web service extensions. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;ISAPI and CGI Restrictions feature in IIS 7.0&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In IIS7/7.5 UI, the web service extensions made it as a feature on the Server Home Page. Select the local server node; double click on the ISAPI and CGI restrictions feature from the Server Home Page&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/nitashav/Isapi_CGI_Restrictions_HomePage_58E67DFF.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Isapi_CGI_Restrictions_HomePage" border="0" alt="Isapi_CGI_Restrictions_HomePage" src="http://blogs.iis.net/blogs/nitashav/Isapi_CGI_Restrictions_HomePage_thumb_176BCBA6.png" width="584" height="449" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;IIS7 UI – ISAPI and CGI Restrictions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/nitashav/Isapi_CGI_Restrictions_03DE6C05.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Isapi_CGI_Restrictions" border="0" alt="Isapi_CGI_Restrictions" src="http://blogs.iis.net/blogs/nitashav/Isapi_CGI_Restrictions_thumb_7B7A96AD.png" width="584" height="446" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you would like to add handler mappings to support ISAPI extensions or CGI programs, you would allow a specific CGI program (executable) or ISAPI extension (dll) by adding it to the ISAPI CGI Restrictions list. This feature determines the execution of 3 party ISAPI / CGI code.&lt;/p&gt;  &lt;p&gt;To allow or restrict an ISAPI extension or CGI module, you would &lt;/p&gt;  &lt;p&gt;- Launch IIS Manager (run inetmgr)&lt;/p&gt;  &lt;p&gt;- Select and expand the local computer node in the tree view&lt;/p&gt;  &lt;p&gt;- Select&amp;#160; “ISAPI and CGI Restrictions” feature from the Server Home Page&lt;/p&gt;  &lt;p&gt;- You can now “Allow” or “Deny” any ISAPI extension or CGI module.&lt;/p&gt;  &lt;p&gt;This UI also lets you Add /Edit or Remove an ISAPI or CGI Restriction. This UI also lets you allow/deny of all unknown CGI and ISAPI extensions by selecting the “Edit Feature Settings…” task in the Actions pane.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next blog in the series: Anonymous Authentication&lt;/p&gt;  &lt;p&gt;As always, please drop a comment if there are any specific UI modules/properties you would like to be compared next and also if you have any feedback on the level of detail.&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3663903" width="1" height="1"&gt;</description><cs:applicationKey>nitashav</cs:applicationKey></item><item><title>FastCGI Module: Differences across IIS versions</title><link>http://blogs.iis.net/ruslany/archive/2010/02/05/fastcgi-module-differences-across-iis-versions.aspx</link><pubDate>Fri, 05 Feb 2010 20:25:50 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3663596</guid><dc:creator>RuslanY Blog</dc:creator><slash:comments>0</slash:comments><description>Recent release of FastCGI Extension 1.5 for IIS 6.0 and IIS 5.1 has several new features and improvements that make it easier to run PHP on Windows and IIS. However, all the new features are only available when using Windows XP or Windows Server 2003. FastCGI module on IIS 7.5 in Windows 7 and Windows Server 2008 R2 supports most of these features. FastCGI module on IIS 7 in Windows Vista and Windows Server 2008 does not support those new features yet. The reasons why this happens and the plan for...(&lt;a href="http://blogs.iis.net/ruslany/archive/2010/02/05/fastcgi-module-differences-across-iis-versions.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3663596" width="1" height="1"&gt;</description><cs:applicationKey>ruslany</cs:applicationKey><category domain="http://blogs.iis.net/ruslany/archive/tags/FastCGI/default.aspx">FastCGI</category></item><item><title>Installing and Setting Up and Encoding for IIS 7 Smooth Streaming and Silverlight</title><link>http://blogs.iis.net/shanselman/archive/2010/02/05/installing-and-setting-up-and-encoding-for-iis-7-smooth-streaming-and-silverlight.aspx</link><pubDate>Fri, 05 Feb 2010 07:17:25 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3662297</guid><dc:creator>Scott Hanselman's Computer Zen - IIS</dc:creator><slash:comments>2</slash:comments><description>I heard someone saying they were having trouble setting up Smooth Streaming for IIS, so I wanted to try it myself. If you just want to see Smooth Streaming work, visit http://www.smoothhd.com/ for some sample demos. They'll adapt to your bandwidth and Read More......(&lt;a href="http://blogs.iis.net/shanselman/archive/2010/02/05/installing-and-setting-up-and-encoding-for-iis-7-smooth-streaming-and-silverlight.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3662297" width="1" height="1"&gt;</description><cs:applicationKey>shanselman</cs:applicationKey><category domain="http://blogs.iis.net/shanselman/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.iis.net/shanselman/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.iis.net/shanselman/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Web Deploy 1.1 has shipped!</title><link>http://blogs.iis.net/msdeploy/archive/2010/02/04/web-deploy-1-1-has-shipped.aspx</link><pubDate>Thu, 04 Feb 2010 16:46:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3660926</guid><dc:creator>faith_a</dc:creator><slash:comments>1</slash:comments><description>&lt;P mce_keep="true"&gt;We happy to announce that we just shipped an update to our RTW 1.0 bits with a set of bug fixes that have been reported on the forums and through our feedback channels.&lt;/P&gt;
&lt;P mce_keep="true"&gt;What's new:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Credential store - no longer do you need to use your password on the command-line, you can get it from the credential store [link&amp;nbsp;coming soon!]&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Code download update - &lt;A href="http://blogs.iis.net/krolson/archive/2010/01/27/code-download-and-the-web-deployment-tool-msdeploy-remote-management-options.aspx"&gt;http://blogs.iis.net/krolson/archive/2010/01/27/code-download-and-the-web-deployment-tool-msdeploy-remote-management-options.aspx&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;TS Data support - &lt;A href="http://blogs.iis.net/krolson/archive/2010/02/02/sqlcmd-scripts-in-web-deploy-msdeploy-v1-1.aspx"&gt;http://blogs.iis.net/krolson/archive/2010/02/02/sqlcmd-scripts-in-web-deploy-msdeploy-v1-1.aspx&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Fixes for a bugs around mime maps, bitness detection and more&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;You can get the new bits at our extension page, &lt;A href="http://www.iis.net/webdeploymenttool"&gt;http://www.iis.net/webdeploymenttool&lt;/A&gt; and in the Web Platform Installer.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Happy deployments,&lt;BR&gt;Faith and the rest of the Web Deploy team&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3660926" width="1" height="1"&gt;</description><cs:applicationKey>msdeploy</cs:applicationKey><category domain="http://blogs.iis.net/msdeploy/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/msdeploy/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.iis.net/msdeploy/archive/tags/MSDeploy/default.aspx">MSDeploy</category><category domain="http://blogs.iis.net/msdeploy/archive/tags/Web+Deployment/default.aspx">Web Deployment</category></item><item><title>Writing Extensible Providers for WebDeploy V1 RTM</title><link>http://blogs.iis.net/msdeploy/archive/2010/02/04/writing-extensible-providers-for-webdeploy-v1-rtm.aspx</link><pubDate>Thu, 04 Feb 2010 01:32:07 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3659251</guid><dc:creator>yaminij</dc:creator><slash:comments>0</slash:comments><description>&lt;blockquote&gt;   &lt;p&gt;During the RC timeframe of Web Deploy, we published a couple of sample custom providers that help you understand how to extend msdeploy. One of them is the &lt;a href="http://blogs.iis.net/msdeploy/archive/2009/03/30/msdeploy-sample-custom-provider-to-sync-mysql-databases-dbfullmysql.aspx"&gt;dbFullMySql&lt;/a&gt; custom provider that can sync MySql databases and the other is the &lt;a href="http://blogs.iis.net/kateroh/archive/2009/06/19/msdeploy-custom-provider-to-execute-batch-files.aspx"&gt;batch&lt;/a&gt; file provider that can remotely execute a batch command.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;There were a number of changes since RC of the Web Deployment tool. So these older versions of the custom providers do not work anymore on RTM version of the Web Deployment Tool. You can download the newer versions of both these providers from &lt;a href="http://blogs.iis.net/blogs/msdeploy/CustomProviders.zip"&gt;here&lt;/a&gt;. You will need to &lt;a href="http://www.iis.net/expand/WebDeploymentTool"&gt;Web Deployment Tool RTM&lt;/a&gt; installed in order to be able to see the working of these providers. All you need to do is drop BatchProvider.dll and MySqlCustomProvider.dll into a folder called &lt;strong&gt;Extensibility &lt;/strong&gt;(this needs to be created by the user) under “&lt;strong&gt;%programfiles%\IIS\Microsoft Web Deploy”&lt;/strong&gt;. The Web Deployment Tool’s command-line executable msdeploy.exe, the Agent Service msdepsvc.exe and the Packaging UI will all pick up the provider from this location and start working seamlessly.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;The functionality provided by dbFullMySql and Batch providers are already integrated into the Web Deployment Tool’s RTW release as dbMySql and runCommand providers. It is recommended that you use the official versions integrated into the product for enterprise level deployment and usage. The sample providers uploaded in this blog should be used as a starting point and learning material to write other extensible providers.&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3659251" width="1" height="1"&gt;</description><cs:applicationKey>msdeploy</cs:applicationKey></item><item><title>How do you access IIS behind a NAT router?</title><link>http://blogs.iis.net/tomkmvp/archive/2010/02/03/how-do-you-access-iis-behind-a-nat-router.aspx</link><pubDate>Wed, 03 Feb 2010 11:48:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3657867</guid><dc:creator>tomkmvp</dc:creator><slash:comments>0</slash:comments><description>&lt;P mce_keep="true"&gt;(this was originally published in the November 2005 edition of the &lt;EM&gt;IIS Insider&lt;BR&gt;&lt;A href="http://technet.microsoft.com/en-us/library/bb878107.aspx" mce_href="http://technet.microsoft.com/en-us/library/bb878107.aspx"&gt;http://technet.microsoft.com/en-us/library/bb878107.aspx&lt;/A&gt;&lt;/EM&gt;)&lt;/P&gt;
&lt;P mce_keep="true"&gt;Network address translation (NAT) routers have become very common lately as they are inexpensive and offer an easy way to set up a simple network. They are often used in corporate environments to isolate a test platform and are popular with home users as an easy way to share a broadband Internet connection amongst multiple computers in the household. Difficulties arise, however, because without proper configuration, the router will block access to your IIS server. A technology called "port forwarding" is used to enable access to the server from the outside world. In simple terms, the router is instructed to forward all requests it receives on a certain port to a specific computer on its network. While the standard port for HTTP traffic is 80, this can also be used for alternate available ports. &lt;/P&gt;
&lt;P mce_keep="true"&gt;Most NAT routers have an embedded Web server that is used for configuration. Consult your documentation for the specific URL to use to connect. Once connected, look for Port Forwarding as one of the options to configure. The common way to configure this is to identify: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The service (HTTP in this case) &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The port range you want to forward (port 80 by default for Web traffic) &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The IP address to which you want to route all requests (the IP address of your server) &lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;Because you need to statically map the port forwarding, it's best to assign a static IP for your server and not rely on DHCP. This technique can also be used for other services that you want to provide, such as SMTP, NNTP, or FTP. These services would be configured in the same way, except that you would forward the appropriate ports for each service. For specific instructions for your router, consult the manufacturer's Web site. Manufacturers typically offer documentation, pointers, and answers to frequently asked questions in their support areas. &lt;/P&gt;
&lt;P mce_keep="true"&gt;An alternate method is to place your server in what might be called the Neutral Zone. While the router will still assign a static or dynamic IP for your server, the router will not block any requests and will therefore leave your box wide open for attacks. Make sure you have either a good software or hardware firewall protecting that server. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;EM&gt;One final note:&lt;/EM&gt;&lt;/STRONG&gt; If you are a home user, please make sure you are not violating your Internet service provider's (ISP) Terms of Service as many broadband providers prohibit their home users from running servers. In many cases, ISPs will even block inbound port 80 traffic on their networks, making port 80 unusable for this type of use. &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3657867" width="1" height="1"&gt;</description><cs:applicationKey>tomkmvp</cs:applicationKey></item><item><title>Comparing Adaptive Streaming Technologies</title><link>http://blogs.iis.net/chriskno/archive/2010/02/02/comparing-adaptive-streaming-technologies.aspx</link><pubDate>Wed, 03 Feb 2010 01:41:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3656732</guid><dc:creator>chriskno</dc:creator><slash:comments>10</slash:comments><description>&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"&gt;Are you wondering how various adaptive streaming technologies compare? A new comparison chart of the latest technologies from Microsoft, Adobe, and Apple may provide the answers. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"&gt;Media delivery using adaptive streaming is becoming more pervasive. As end users experience the latest generation of media streaming and player technologies, their expectations are raised for all of their online video, both in terms of playback quality and interactivity. For many, adaptive streaming provides the best instant-on video experience they have ever seen online. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"&gt;At the same time, developers are looking for the most effective way to build a compelling browser-based video application using their using their existing skill sets. Content producers want to attract the largest number of users, and potentially the highest loyalty-building and monetization opportunities, by offering a differentiated experience. Content distributors want massive scalability, proven reliability, rich analytics, three-screens reach, and lowest cost. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"&gt;At a high level, various flavors of adaptive streaming meet some of these needs. However, when you dive into the details, IIS Smooth Streaming does a better job of meeting all of these requirements. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"&gt;To compare technologies, please see our &lt;A title="Adaptive Streaming Comparison" href="http://learn.iis.net/page.aspx/792/adaptive-streaming-comparison" mce_href="http://learn.iis.net/page.aspx/792/adaptive-streaming-comparison"&gt;&lt;SPAN style="COLOR: blue; TEXT-DECORATION: underline"&gt;Adaptive Streaming Comparison&lt;/SPAN&gt;&lt;/A&gt; article. &lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3656732" width="1" height="1"&gt;</description><cs:applicationKey>chriskno</cs:applicationKey><category domain="http://blogs.iis.net/chriskno/archive/tags/IIS+Media+Services/default.aspx">IIS Media Services</category><category domain="http://blogs.iis.net/chriskno/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.iis.net/chriskno/archive/tags/Smooth+Streaming/default.aspx">Smooth Streaming</category><category domain="http://blogs.iis.net/chriskno/archive/tags/Adaptive+Streaming/default.aspx">Adaptive Streaming</category><category domain="http://blogs.iis.net/chriskno/archive/tags/media/default.aspx">media</category></item><item><title>SQLCMD scripts in Web Deploy (MSDeploy) v1.1</title><link>http://blogs.iis.net/krolson/archive/2010/02/02/sqlcmd-scripts-in-web-deploy-msdeploy-v1-1.aspx</link><pubDate>Tue, 02 Feb 2010 18:18:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3656022</guid><dc:creator>krolson</dc:creator><slash:comments>3</slash:comments><description>&lt;P&gt;New in the v1.1 release of the Web Deployment Tool (MSDeploy) is the ability to deploy .sql scripts which use SQLCMDs such as “:setvar” (a.k.a. TS Data scripts).&amp;nbsp; Additionally, when using such scripts during the import or export of a package in the UI, :setvar variables will be automatically parameterized.&lt;/P&gt;
&lt;P&gt;Suppose you have a simple script which uses SQLCMD, with contents like the following:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;:setvar databaseName TestDatabase &lt;BR&gt;:setvar tableName&amp;nbsp;&amp;nbsp;&amp;nbsp; TestTable &lt;BR&gt;GO &lt;BR&gt;create database $(databaseName) &lt;BR&gt;GO &lt;BR&gt;use $(databaseName) &lt;BR&gt;GO &lt;BR&gt;create table $(tableName)(name varchar(50)) &lt;BR&gt;GO &lt;BR&gt;Insert into $(tableName) values('first') &lt;BR&gt;Insert into $(tableName) values('first') &lt;BR&gt;Insert into $(tableName) values('first') &lt;BR&gt;Insert into $(tableName) values('first') &lt;BR&gt;Insert into $(tableName) values('first') &lt;BR&gt;GO&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;If you try to use this script with the dbFullSql provider to create a database in RTW Web Deploy, you’ll see errors due to the :setvar SQL CMD:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/clip_image00117_3763E413.png" mce_href="http://blogs.iis.net/blogs/krolson/clip_image00117_3763E413.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image001[17] border=0 alt=clip_image001[17] src="http://blogs.iis.net/blogs/krolson/clip_image00117_thumb_29B1280B.png" width=836 height=254 mce_src="http://blogs.iis.net/blogs/krolson/clip_image00117_thumb_29B1280B.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Refresh Web Deploy (v1.1) will handle these scripts, and will also automatically parameterize your SQL CMD variables if you use the Web Deploy Inetmgr UI.&amp;nbsp; Here’s an example:&lt;/P&gt;
&lt;P&gt;1. Open Inetmgr and select an application to export click the “Export Application…” task in the Actions pane&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/exportApp_657D9433.png" mce_href="http://blogs.iis.net/blogs/krolson/exportApp_657D9433.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=exportApp border=0 alt=exportApp src="http://blogs.iis.net/blogs/krolson/exportApp_thumb_35FEFF9A.png" width=958 height=559 mce_src="http://blogs.iis.net/blogs/krolson/exportApp_thumb_35FEFF9A.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;2. In the resulting Export Application wizard, click “Manage Components…”&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/clickManageComponents_0C3B84A7.png" mce_href="http://blogs.iis.net/blogs/krolson/clickManageComponents_0C3B84A7.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clickManageComponents border=0 alt=clickManageComponents src="http://blogs.iis.net/blogs/krolson/clickManageComponents_thumb_2B7E2B7A.png" width=593 height=454 mce_src="http://blogs.iis.net/blogs/krolson/clickManageComponents_thumb_2B7E2B7A.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;3. Add a “dbFullSql” provider using the location of your SQLCMD script as the path&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/clip_image001_38780B8B.png" mce_href="http://blogs.iis.net/blogs/krolson/clip_image001_38780B8B.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image001 border=0 alt=clip_image001 src="http://blogs.iis.net/blogs/krolson/clip_image001_thumb_49100679.png" width=562 height=334 mce_src="http://blogs.iis.net/blogs/krolson/clip_image001_thumb_49100679.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;4. Click the Provider Settings column and use the “…” button to open the Provider Settings dialog&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/clickForProviderSettings_21698A4F.png" mce_href="http://blogs.iis.net/blogs/krolson/clickForProviderSettings_21698A4F.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clickForProviderSettings border=0 alt=clickForProviderSettings src="http://blogs.iis.net/blogs/krolson/clickForProviderSettings_thumb_0EB49098.png" width=566 height=339 mce_src="http://blogs.iis.net/blogs/krolson/clickForProviderSettings_thumb_0EB49098.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;5. Set the “Transacted” setting to “false”. (Note: the import of SQLCMD scripts will fail if you do not set transacted=false &lt;EM&gt;AND&lt;/EM&gt; have CREATE DATABASE or CREATE FULLTEXT CATALOG statements in the script.&amp;nbsp;&amp;nbsp; The export will still work if you do not set the transacted setting, however it is not possible to set this transacted setting during import &lt;EM&gt;in the UI&lt;/EM&gt;, so it is highly recommended that you do this step during export.) Click Close.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/clip_image0015_3D4A997A.png" mce_href="http://blogs.iis.net/blogs/krolson/clip_image0015_3D4A997A.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image001[5] border=0 alt=clip_image001[5] src="http://blogs.iis.net/blogs/krolson/clip_image0015_thumb_63AC7CC5.png" width=415 height=234 mce_src="http://blogs.iis.net/blogs/krolson/clip_image0015_thumb_63AC7CC5.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;6. Click OK.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/closeManageComponents_43253D13.png" mce_href="http://blogs.iis.net/blogs/krolson/closeManageComponents_43253D13.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=closeManageComponents border=0 alt=closeManageComponents src="http://blogs.iis.net/blogs/krolson/closeManageComponents_thumb_6267E3E6.png" width=564 height=338 mce_src="http://blogs.iis.net/blogs/krolson/closeManageComponents_thumb_6267E3E6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;7. Now you can see the script added to the package under Deploy SQL Database. Click Next.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/seeScriptHasBeenAdded_36B719EA.png" mce_href="http://blogs.iis.net/blogs/krolson/seeScriptHasBeenAdded_36B719EA.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=seeScriptHasBeenAdded border=0 alt=seeScriptHasBeenAdded src="http://blogs.iis.net/blogs/krolson/seeScriptHasBeenAdded_thumb_41083E4A.png" width=592 height=456 mce_src="http://blogs.iis.net/blogs/krolson/seeScriptHasBeenAdded_thumb_41083E4A.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;8. On this page you can see 3 parameters related to your script: “Parameter 2” is the SqlConnectionString for the script. There are also automatically generated “SqlCmdVariable” parameters – one for each :setVar variable specified in the script!&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/clip_image0017_2734081B.png" mce_href="http://blogs.iis.net/blogs/krolson/clip_image0017_2734081B.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image001[7] border=0 alt=clip_image001[7] src="http://blogs.iis.net/blogs/krolson/clip_image0017_thumb_18895C36.png" width=587 height=449 mce_src="http://blogs.iis.net/blogs/krolson/clip_image0017_thumb_18895C36.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;9. You can also see that these are using a new Parameter Entry Type – select one of the SqlCmdVariable parameter’s Parameter Entries and click Edit… to see how this is used.&amp;nbsp; This parameter entry says it applies to a variable called “databaseName” within the script at D:\simplescript.sql.&amp;nbsp; Click OK or Cancel to close the edit dialog and then click Next.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/clip_image0019_7578EAC5.png" mce_href="http://blogs.iis.net/blogs/krolson/clip_image0019_7578EAC5.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image001[9] border=0 alt=clip_image001[9] src="http://blogs.iis.net/blogs/krolson/clip_image0019_thumb_5BA4B496.png" width=356 height=357 mce_src="http://blogs.iis.net/blogs/krolson/clip_image0019_thumb_5BA4B496.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;10. Specify where to save your package and click Next. That’s it!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/clip_image00111_48EFBADF.png" mce_href="http://blogs.iis.net/blogs/krolson/clip_image00111_48EFBADF.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image001[11] border=0 alt=clip_image001[11] src="http://blogs.iis.net/blogs/krolson/clip_image00111_thumb_4F36916D.png" width=590 height=450 mce_src="http://blogs.iis.net/blogs/krolson/clip_image00111_thumb_4F36916D.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Now, if you want to import a package with a TS Data script, such as the one just created, you’ll find that the SqlCmdVariable parameters allow you to change the script :setvar variables (such as replacing the default databaseName variable “TestDatabase” with “MyCoolApp_db”).&amp;nbsp; They also have a nice description to let you know which variable it refers to in the script. The default value will be what is written in the script for that variable (i.e. the script default).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/blogs/krolson/clip_image00113_07750886.png" mce_href="http://blogs.iis.net/blogs/krolson/clip_image00113_07750886.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=clip_image001[13] border=0 alt=clip_image001[13] src="http://blogs.iis.net/blogs/krolson/clip_image00113_thumb_78CA5CA0.png" width=588 height=450 mce_src="http://blogs.iis.net/blogs/krolson/clip_image00113_thumb_78CA5CA0.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Note on other SQLCMD directives&lt;/H2&gt;
&lt;P&gt;Web Deploy v1.1 will be able to deploy scripts with SQL CMDs, but with the exception of :setVar, many of the commands will be either be considered “no-ops” (“no operation” – they will be effectively ignored) or will result in an exception. The following table shows whether use of a given SQLCMD will result in a no-op or failure by noting what Web Deploy does when it encounters the directive:&lt;/P&gt;
&lt;TABLE border=2 cellSpacing=2 cellPadding=5 width=323&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;&lt;STRONG&gt;SQLCMD&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;&lt;STRONG&gt;Web Deploy action&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:RESET&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:ED&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:!!&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;throw exception&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:QUIT&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;throw exception&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:EXIT&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;throw exception&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:r&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;throw exception&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:ServerList&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:Setvar&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;supported, can be parameterized&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:List&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:Error&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:Out&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:Perftrace&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:Connect&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;throw exception&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:On Error&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:Help&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;throw exception&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:Xml&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=102&gt;:Listvar&lt;/TD&gt;
&lt;TD vAlign=top width=211&gt;none&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;You can find more information on these SQLCMDs and what they do here: &lt;A title=http://msdn.microsoft.com/en-us/library/ms162773.aspx href="http://msdn.microsoft.com/en-us/library/ms162773.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms162773.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms162773.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3656022" width="1" height="1"&gt;</description><cs:applicationKey>krolson</cs:applicationKey><category domain="http://blogs.iis.net/krolson/archive/tags/_3A00_setvar/default.aspx">:setvar</category><category domain="http://blogs.iis.net/krolson/archive/tags/MSDeploy/default.aspx">MSDeploy</category><category domain="http://blogs.iis.net/krolson/archive/tags/TS+Data/default.aspx">TS Data</category><category domain="http://blogs.iis.net/krolson/archive/tags/Web+Deploy/default.aspx">Web Deploy</category><category domain="http://blogs.iis.net/krolson/archive/tags/Web+Deployment+Tool/default.aspx">Web Deployment Tool</category><category domain="http://blogs.iis.net/krolson/archive/tags/SQLCMD/default.aspx">SQLCMD</category><category domain="http://blogs.iis.net/krolson/archive/tags/SqlCmdVariable/default.aspx">SqlCmdVariable</category></item><item><title>WINCACHE test code committed to PECL, paves a way to test PHP CGI</title><link>http://blogs.iis.net/donraman/archive/2010/02/01/wincache-test-code-committed-to-pecl-paves-a-way-to-test-php-cgi.aspx</link><pubDate>Mon, 01 Feb 2010 18:24:01 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3653455</guid><dc:creator>don.raman</dc:creator><slash:comments>3</slash:comments><description>&lt;p align="justify"&gt;Few days back I made some code commit (code check-in) to WINCACHE SVN depot on PECL. I committed the test infrastructure to test WINCACHE. The entire test code can be see inside the folder at &lt;a title="http://svn.php.net/viewvc/pecl/wincache/trunk/tests/" href="http://svn.php.net/viewvc/pecl/wincache/trunk/tests/"&gt;http://svn.php.net/viewvc/pecl/wincache/trunk/tests/&lt;/a&gt;. Let me explain how it works. In order to make it work first of all the binaries has to be compiled. This is the binary which is responsible for driving the test suite, I call it as a kind of test driver. I have already committed the the Visual Studio solution file which is at location &lt;a title="http://svn.php.net/viewvc/pecl/wincache/trunk/tests/driver/test_wincache.sln?view=log" href="http://svn.php.net/viewvc/pecl/wincache/trunk/tests/driver/test_wincache.sln?view=log"&gt;http://svn.php.net/viewvc/pecl/wincache/trunk/tests/driver/test_wincache.sln?view=log&lt;/a&gt;. However the solution file is meant for Visual Studio 2008 and may not be compatible with previous versions of Visual Studio. If you are using an old version of Visual Studio you may need to create a new solution/project file (simply chose ‘WIN32 Console Application’ while creating the solution/project file). After creating a new solution just add the C++ source/header files present at &lt;a title="http://svn.php.net/viewvc/pecl/wincache/trunk/tests/driver/test_wincache/" href="http://svn.php.net/viewvc/pecl/wincache/trunk/tests/driver/test_wincache/"&gt;http://svn.php.net/viewvc/pecl/wincache/trunk/tests/driver/test_wincache/&lt;/a&gt; to the solution/project. Compile it in Visual Studio and the binaries should be made. This builds one executable which is named ‘test_wincache.exe’. You can either compile Release/Debug build but I always prefer Release build. Here is how you can use the binaries to test WINCACHE.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;In your document root (typically C:\inetpub\wwwroot on IIS) create a new folder named ‘testwincache’.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Copy the folder named ‘php_all’ and ‘php_5_3’ from &lt;a title="http://svn.php.net/viewvc/pecl/wincache/trunk/tests/" href="http://svn.php.net/viewvc/pecl/wincache/trunk/tests/"&gt;http://svn.php.net/viewvc/pecl/wincache/trunk/tests/&lt;/a&gt;. Let me take some time explaining how the test cases are organized.&lt;/div&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;div align="justify"&gt;Inside the folder named ‘php_all’ there are PHP files which will run on both PHP 5.2 as well as PHP 5.3.&lt;/div&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;div align="justify"&gt;The folder ‘php_5_3’ contains test cases specific to PHP 5.3 and should not be run with PHP 5.2 as they will fail. They contain syntax/code specific to PHP 5.3.&lt;/div&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Copy the folder named ‘php_all’ and ‘php_5_3’ inside the just created folder named ‘testwincache’.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;In the folder named ‘testwincache’ create a folder named ‘temp’. Please ensure that this folder has sufficient right/ACL so that PHP application can write to it.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Also ensure that PHP application has proper read/write permission for folder named ‘php_all’ and ‘php_5_3’.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Open an elevated command prompt if you are on Vista+ OS. &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Go to the folder where test_wincache.exe is present.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Type &lt;em&gt;test_wincache.exe C:\inetpub\wwwroot\testwincache\php_all &lt;/em&gt;&lt;a href="http://localhost/testwincache/php_all"&gt;&lt;em&gt;http://localhost/testwincache/php_all&lt;/em&gt;&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;This will run the WINCACHE test cases and dump a nice summary. The result can also be found in the file named result.txt inside temp folder.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;If one wants to run php_5_3 test cases just replace php_all with php_5_3 in the above command.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;One can also run &lt;em&gt;test_wincache --detailed&lt;/em&gt; to get a detailed usage of the tool.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;What the code does?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;The code parses the directory which is supplied as first argument and finds all the file which has name wincache&amp;lt;test_case_number&amp;gt;.php&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Opens Internet Explorer and executes the test file in the browser using the &lt;a href="http://msdn.microsoft.com/en-us/library/aa752127(VS.85).aspx" target="_blank"&gt;IWebBrowser2&lt;/a&gt; interface.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Each test case has an associated file named wincache&amp;lt;test_case_number&amp;gt;.out.txt which contains the expected output of the test case.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;The test case itself write a file named output.txt in the temporary folder named ‘temp’.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;The above two files are compared to indicate pass/failure.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;A file named ‘result.txt’ is created where the test case pass/failure is logged.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;For people interested in knowing the details of commit please look at &lt;a title="http://svn.php.net/viewvc?view=revision&amp;amp;revision=294232" href="http://svn.php.net/viewvc?view=revision&amp;amp;revision=294232"&gt;http://svn.php.net/viewvc?view=revision&amp;amp;revision=294232&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;But didn’t the title of the blog says that this paves the way to test PHP CGI executable? Yes, it does. If you look at PHP regression suite, one thing which is missing there is the lack of way to test php-cgi.exe as it will involve running the test cases in the browser. Though the code is shared between CLI and CGI version of PHP, running under browser is an important aspect of testing PHP as the credential under which the CGI executable runs inside the browser is significantly different than when run through CLI. So if someone is eager in the community to take this forward I am more than willing to work with him to make this happen. If anyone happens to be interested in this work mail me back at DONRAMAN[at]microsoft[dot]com and we can work something out together. One obvious limitation of this solution is that it will work only on WINDOWS platform with Internet Explorer installed.&lt;/p&gt;  &lt;p align="justify"&gt;I will stop now. Thanks for patient reading and till we meet again ‘Good Bye’.&lt;/p&gt;  &lt;p align="justify"&gt;Thanks,&lt;/p&gt;  &lt;p align="justify"&gt;Don.&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3653455" width="1" height="1"&gt;</description><cs:applicationKey>donraman</cs:applicationKey><category domain="http://blogs.iis.net/donraman/archive/tags/PHP/default.aspx">PHP</category><category domain="http://blogs.iis.net/donraman/archive/tags/PHP+testing/default.aspx">PHP testing</category><category domain="http://blogs.iis.net/donraman/archive/tags/WINCACHE+Testing/default.aspx">WINCACHE Testing</category></item><item><title>Announcing: IIS SEO Toolkit v1.0.1</title><link>http://blogs.iis.net/carlosag/archive/2010/02/01/announcing-iis-seo-toolkit-v1-0-1.aspx</link><pubDate>Mon, 01 Feb 2010 07:42:39 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3652496</guid><dc:creator>CarlosAg Blog</dc:creator><slash:comments>15</slash:comments><description>Last week we released a refresh for the IIS Search Engine Optimization (SEO) Toolkit v1.0. This version is a minor update that includes fixes for all the important bugs reported in the IIS.NET SEO Forum . Some of the fixes included in this version are: Pages sending the XHTML content type 'application/xhtml+xml' are not parsed correctly as HTML causing their links and violations to be empty. Report Analysis fails if the META tags include certain characters. &amp;lt;style&amp;gt; tag is not parsed correctly...(&lt;a href="http://blogs.iis.net/carlosag/archive/2010/02/01/announcing-iis-seo-toolkit-v1-0-1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3652496" width="1" height="1"&gt;</description><cs:applicationKey>carlosag</cs:applicationKey><category domain="http://blogs.iis.net/carlosag/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.iis.net/carlosag/archive/tags/IIS+Manager/default.aspx">IIS Manager</category><category domain="http://blogs.iis.net/carlosag/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/carlosag/archive/tags/SEO/default.aspx">SEO</category></item><item><title>Fun with Search Engines (Bing versus [other])</title><link>http://blogs.iis.net/robert_mcmurray/archive/2010/02/01/fun-with-search-engines-bing-versus-other.aspx</link><pubDate>Mon, 01 Feb 2010 06:20:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3652539</guid><dc:creator>Robert McMurray's Blog [MSFT]</dc:creator><slash:comments>9</slash:comments><description>Several months ago I read the following article and I found it fascinating, albeit in a humorous way: Users Love Microsoft, Yahoo Search -- When It's Branded With A Google Logo It was around this same time that I saw an article about the Bing API being published and available for developers to use, so I thought that I would have some fun by merging the idea in that article with the Bing search API and create a little experiment on my home network. By way of explanation, my house has some overkill...(&lt;a href="http://blogs.iis.net/robert_mcmurray/archive/2010/02/01/fun-with-search-engines-bing-versus-other.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3652539" width="1" height="1"&gt;</description><cs:applicationKey>robert_mcmurray</cs:applicationKey><category domain="http://blogs.iis.net/robert_mcmurray/archive/tags/Random+Thoughts/default.aspx">Random Thoughts</category></item><item><title>Application specific mapping in FastCGI ISAPI 1.5</title><link>http://blogs.iis.net/ksingla/archive/2010/01/31/application-specific-mapping-in-fastcgi-isapi-1-5.aspx</link><pubDate>Mon, 01 Feb 2010 03:26:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3651868</guid><dc:creator>ksingla</dc:creator><slash:comments>6</slash:comments><description>IIS team recently released FastCGI ISAPI 1.5 for IIS 5.1 and IIS 6.0. One of the major new features added in this release is per application process pools. Per application process pools allow users to specify a unique FastCGI mapping for a particular web application in fcgiext.ini. Using this functionality administrators can now choose to run a web application with PHP version which can be different from what is used for rest of the PHP applications in the same site or the server. This was always...(&lt;a href="http://blogs.iis.net/ksingla/archive/2010/01/31/application-specific-mapping-in-fastcgi-isapi-1-5.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3651868" width="1" height="1"&gt;</description><cs:applicationKey>ksingla</cs:applicationKey><category domain="http://blogs.iis.net/ksingla/archive/tags/FastCGI/default.aspx">FastCGI</category><category domain="http://blogs.iis.net/ksingla/archive/tags/PHP/default.aspx">PHP</category></item><item><title>IIS6.0 UI vs. IIS7.0/IIS7.5 UI Series: Start Pages</title><link>http://blogs.iis.net/nitashav/archive/2010/01/29/iis6-0-ui-vs-iis7-0-iis7-5-ui-series-start-pages.aspx</link><pubDate>Fri, 29 Jan 2010 19:53:57 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3648878</guid><dc:creator>NitashaV</dc:creator><slash:comments>6</slash:comments><description>&lt;p&gt;Now that we have the &lt;a href="http://blogs.iis.net/nitashav/archive/2010/01/29/iis6-0-ui-vs-iis7-0-iis7-5-ui-series-introduction.aspx"&gt;series introduction&lt;/a&gt; out of the way, let’s start with the side by side comparison between the Start Pages for IIS6 vs. IIS7.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;IIS6 UI Start Page &lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;On a W2K3 machine, run “inetmgr” (Internet Information Services (IIS) Manager)&lt;a href="http://blogs.iis.net/blogs/nitashav/IIS6UI_StartPage_306181D5.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IIS6UI_StartPage" border="0" alt="IIS6UI_StartPage" src="http://blogs.iis.net/blogs/nitashav/IIS6UI_StartPage_thumb_6833C5F8.png" width="524" height="370" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;IIS7/IIS7.5 UI Start Page&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;On a W2K8 machine, run “inetmgr” (Internet Information Services (IIS) Manager)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/nitashav/IIS7_StartPage_0E29764F.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IIS7_StartPage" border="0" alt="IIS7_StartPage" src="http://blogs.iis.net/blogs/nitashav/IIS7_StartPage_thumb_6CC9D0B2.png" width="524" height="390" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You will notice &lt;b&gt;similar concepts between the 2 Start Pages&lt;/b&gt;: &lt;/p&gt;  &lt;p&gt;- Tree view with local server connection as a parent node, with FTP Sites and Web Sites.&lt;/p&gt;  &lt;p&gt;- Content Pane which provides basic information on the connections&lt;/p&gt;  &lt;p&gt;- File Menu , Navigation Bar&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;key differences between the 2 Start Pages&lt;/b&gt;: &lt;/p&gt;  &lt;p&gt;1. The IIS7 UI has &lt;b&gt;more features&lt;/b&gt; on the Start Page, specifically&lt;/p&gt;  &lt;p&gt;- Tree view has Application Pools surfaced as a child node under Server connection node.&lt;/p&gt;  &lt;p&gt;- The IIS7 UI has a Breadcrumb Bar that is always in sync with the tree view and helps with tree view Navigation&lt;/p&gt;  &lt;p&gt;- The content pane has richer data – online resource links, IIS new feature (RSS feed from iis.net) and Connection tasks. No more right clicking on the node (Start Page in IIS7 and Internet Information Services in IIS 6) for the&amp;#160; “Connect” task&lt;/p&gt;  &lt;p&gt;2. &lt;b&gt;Home Pages&lt;/b&gt; when Clicking on each node in the tree view on IIS7 UI vs IIS 6 UI &lt;/p&gt;  &lt;p&gt;In IIS6 UI, clicking on each node provides a summary view of the node. The specific site node shows the content view of the site (same view when the site node is expanded in the tree view)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/nitashav/IIS6_HomePage_04810819.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IIS6_HomePage" border="0" alt="IIS6_HomePage" src="http://blogs.iis.net/blogs/nitashav/IIS6_HomePage_thumb_437288B4.png" width="584" height="396" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In IIS7 UI, clicking on each node provides a “Features View” by default. No more right click on a tree view node –&amp;gt; Properties to start updating the configuration. All configuration properties are surfaced as Features on the Home Page.Clicking on the “Content View” tab will show the same view as the expanded tree view (same behavior as IIS6 UI). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/nitashav/IIS7_ServerHomePage_0D8D939A.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IIS7_ServerHomePage" border="0" alt="IIS7_ServerHomePage" src="http://blogs.iis.net/blogs/nitashav/IIS7_ServerHomePage_thumb_12FC043E.png" width="584" height="446" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;3. &lt;b&gt;Where did my Web Service Extensions go from my tree view?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In IIS7/7.5 UI, the web service extensions made it as a feature on the Server Home Page. Select the local server node; double click on the ISAPI and CGI restrictions feature &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;IIS 6 UI – Web Service Extensions&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/nitashav/WebServiceExtensions_6672D457.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WebServiceExtensions" border="0" alt="WebServiceExtensions" src="http://blogs.iis.net/blogs/nitashav/WebServiceExtensions_thumb_457F61B0.png" width="584" height="396" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;IIS7 UI – ISAPI and CGI Restrictions&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/nitashav/Isapi_CGI_Restrictions_28963CDB.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Isapi_CGI_Restrictions" border="0" alt="Isapi_CGI_Restrictions" src="http://blogs.iis.net/blogs/nitashav/Isapi_CGI_Restrictions_thumb_3523E9F7.png" width="584" height="414" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next blog in this series: More about Web Service Extensions.&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3648878" width="1" height="1"&gt;</description><cs:applicationKey>nitashav</cs:applicationKey></item></channel></rss>