<feed xmlns="http://www.w3.org/2005/Atom"><title type="text">JobServe Labs - Articles</title><subtitle type="text">Articles from the JobServe Labs blog</subtitle><id>http://js001008.jobserve.com/jslabs.svc/feed</id><updated>2012-05-16T16:03:54+01:00</updated><link rel="alternate" href="http://www.labs.jobserve.com/AllArticles.aspx?pNo=1"/><link rel="self" type="application/atom+xml" href="http://www.labs.jobserve.com/jslabs.svc/feed?format=atom&amp;page=1&amp;pageSize=20"/><link rel="next" type="application/atom+xml" href="http://www.labs.jobserve.com/jslabs.svc/feed?format=atom&amp;page=2&amp;pageSize=20"/><link rel="last" type="application/atom+xml" href="http://www.labs.jobserve.com/jslabs.svc/feed?format=atom&amp;page=2&amp;pageSize=20"/><entry><id>69b690ff-cd43-42d9-9d7a-511a82e70580</id><title type="text">Recruiting on the move</title><updated>2011-05-31T09:00:17+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Recruiting-on-the-move"/><category term="General"/><content type="html">&lt;p&gt;“Calling all recruiters” we need your help. JobServe has successfully been developing apps and websites targeting&amp;#160; the Mobile platform to allow Job Seekers to search and apply for your jobs from anywhere. These have now delivered &lt;strong&gt;over half a million Job Applications&lt;/strong&gt; in the 14 months they have been around.&lt;/p&gt;  &lt;p&gt;Last year we launched &lt;a href="http://headhunter.jobserve.com" target="_blank"&gt;JobServe Connect Headhunter&lt;/a&gt; – a mobile friendly website which enables recruiters, like yourself, to hunt down ideal candidates in your busy day, without having to be at your PC. We are pleased with the acceptance of this feature and many recruiters are benefiting from getting at our top candidates quickly and not missing out while you are out on meetings or travelling on a train.&lt;/p&gt;  &lt;p&gt;It is a fact that more and more of business transactions will occur on a mobile device in the coming years and a fact that no business wants to be left behind accessing this technology. What else could be done to simplify using JobServe for your recruitment needs via your Mobile. Let us know on &lt;a href="mailto:mobile@apps.jobserve.com"&gt;mobile@apps.jobserve.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Should we target specific devices or stick with one-fits all Mobile sites such as Headhunter?&lt;/p&gt;  &lt;p&gt;Managing your jobs on the move?&lt;/p&gt;  &lt;p&gt;Viewing Applications to your jobs?&lt;/p&gt;  &lt;p&gt;Messages to and from candidates?&lt;/p&gt;  &lt;p&gt;Let us know!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="mailto:mobile@apps.jobserve.com"&gt;mobile@apps.jobserve.com&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>c4ab1f2f-e0c0-4e00-98ad-da3df28c8e91</id><title type="text">“Please leave a message after the tone”</title><updated>2011-05-31T08:49:26+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Please-leave-a-message-after-the-tone"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff" size="3"&gt;We need your help&lt;/font&gt;&lt;/strong&gt;. The JobServe Mobile platform has been around for a while now with our iPhone App (now on version 3.03), the iPad app and our Mobile friendly site for other mobile platforms. These have been very successful and many of you have been using them to search and apply for jobs, quickly and easily. We want these apps to be the best they can be for you and so we are planning our next phase of releases.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;iPhone App Version 4.0&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Apps on the iPhone continue to improve and the way features are offered becomes more intuitive and utilises the technology more and more. How could searching for a job be improved on the iPhone? Is there any features or apps you have used (not necessarily job hunting apps) which provide mechanisms or techniques that could assist you?&lt;/p&gt;  &lt;p&gt;We have many ideas for what features we can offer in the next big release, many of these are based on feedback you have already been providing over the last few months – but, let us know of anything you think would improve your experience on the iPhone and help you chase down that next job.&lt;/p&gt;  &lt;p&gt;Simply email us at &lt;a href="mailto:iphone4@apps.jobserve.com"&gt;iphone4@apps.jobserve.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;iPad App Version 2.0&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We launched our iPad app the day the iPad made its grand entrance in the USA, in April 2010. Since then it has been a successful addition to our suite of mobile offerings but it lags the iPhone App on features. Instead of cloning exactly the iPhone app we want to make sure our iPad app utilises the technology the iPad can offer. That is why our iPad App was designed specifically for the device, with full screen use and not just simply an iPhone App running on the iPad.&lt;/p&gt;  &lt;p&gt;Is there anything you have seen on the iPad that you think would enhance your experience hunting for jobs. iPad Apps provide some very immersive experiences, but applying for a job should remain simply, quick and intuitive.&lt;/p&gt;  &lt;p&gt;Similarly to the iPhone, are there any features which you would feel are MUST HAVE for the iPad. Let us know at &lt;a href="mailto:ipad2@apps.jobserve.com"&gt;ipad2@apps.jobserve.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;JobServe Mobile 3.0&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Our new Mobile friendly web site has provided job search and application features to thousands of candidates over the last year. Whilst not as full featured as the iPhone App it has provided some unique features such as a Job Basket. We want to continue to provide a simple interface to JobServe that allows the most availability of services to Mobile users. But what are we missing? How can the Mobile site be improved? Let us know at &lt;a href="mailto:mobile3@apps.jobserve.com"&gt;mobile3@apps.jobserve.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;JobServe Android App 1.0&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Yes, we are planning our first, Google Android targeted App. What we need to know is What is crucial to this App being a success? Android users currently heavily use the Mobile site so what will encourage transition to the Android App. Let us know on &lt;a href="mailto:android@apps.jobserve.com"&gt;android@apps.jobserve.com&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>ede77819-14d4-4fab-b245-807e76292dac</id><title type="text">Another update to our iPhone Job Search</title><updated>2010-09-30T07:46:00+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Another-update-to-our-iPhone-Job-Search"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;Today version 3.01 has been released, this follows very quickly on the heels of the last major release, version 3.0. &lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=335516223&amp;amp;mt=8&amp;amp;s=143441" target="_blank"&gt;JobServe Connect – Job Search&lt;/a&gt; app for the iPhone is proving so popular that we are inundated with feature requests and suggestions – this app is for you to find new jobs so any requests deemed useful for the majority of users is implemented.&lt;/p&gt;  &lt;p&gt;This release contains three useful additions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;When a search for jobs is run on the results page the jobs are marked as viewed if you have recently &lt;em&gt;viewed&lt;/em&gt; their full detail.&lt;/li&gt;    &lt;li&gt;Also if a job has been &lt;font color="#ff0000"&gt;&lt;em&gt;applied&lt;/em&gt;&lt;/font&gt; for already, you will be shown this on the results.&lt;/li&gt;    &lt;li&gt;The Date the job was posted on to JobServe is now also shown on the results page.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#808080"&gt;The other important reason we have released a new version is to also correct an issue with version 3.0 running on iOS3. The search screen did crash unpredictably, we apologise for this oversight and with this release following only one week after v3.0 was released we hope the inconvenience was minimised. Now users who have not been able to upgrade their iPhone OS to OS4 or above can benefit from the full features in v3.0 (and now v3.01)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;As usual the app is available on iTunes – just search for JobServe.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Keep the suggestions coming.&lt;/strong&gt;&lt;/p&gt;</content></entry><entry><id>9164402f-4b34-4d9f-9a0b-7a0d4e2a7563</id><title type="text">iPhone Job Search Version 3.0 released</title><updated>2010-09-22T14:30:00+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/iPhone-Job-Search-Version-30-released"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;We are pleased to announce that version 3.0 of our successful &lt;strong&gt;JobServe Connect – Job Search&lt;/strong&gt; app for the iPhone has now been released.&lt;/p&gt;  &lt;p&gt;Following feedback from our users we have added a few minor usability improvements and the following two major features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Industry Search – You can now refine your search to a specific industry or a collection of industries from the main search screen. &lt;/li&gt;    &lt;li&gt;Select your CV – When applying for jobs you are now able to select which CV from your online JobServe account will be attached to your application. Now you can easily store multiple CVs on your account and then send the right one to the right job. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We plan to release another update in October including some more of your ideas and also a long awaited version 2 of the iPad app will come in October.&lt;/p&gt;  &lt;p&gt;The app is on iTunes simply search for &lt;strong&gt;JobServe&lt;/strong&gt;.&lt;/p&gt;</content></entry><entry><id>82273627-fe00-4691-abab-3aeaebd08cf1</id><title type="text">JobServe Connect new addition</title><updated>2010-09-16T19:07:00+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/JobServe-Connect-new-addition"/><category term="Connect: Headhunter"/><content type="html">&lt;p&gt;There is a great need to allow job seekers and recruiters easy access to what they need to do on a Job Board from wherever they are. Smart Mobile phones are on the increase and many find internet access while out and about almost a necessity. &lt;/p&gt;  &lt;p&gt;Applying for that great new job as soon as it is posted is a great bonus for any serious job seeker – JobServe Connect Job Search for the &lt;a href="http://www.labs.jobserve.com/Articles.aspx/JobServe-Job-Search-iPhone-App-v20-Released" target="_blank"&gt;iPhone&lt;/a&gt; and &lt;a href="http://www.labs.jobserve.com/Articles.aspx/Search-and-Apply-for-Jobs-from-anywhere" target="_blank"&gt;iPad&lt;/a&gt; was the first way we gave full access to job seeking and applying from a mobile. We have seen legions of users download and use this app daily and the numbers continue to grow. In June we extended our Mobile reach by releasing the long awaited update to our mobile site – &lt;a href="http://www.mobile.jobserve.com" target="_blank"&gt;JobServe Connect Mobile&lt;/a&gt;. This allowed other internet enabled phones to access job seeking and applying as simply as possible.&lt;/p&gt;  &lt;p&gt;The summer has seen record numbers of users use both mobile job seeking tools and September is no difference.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://www.labs.jobserve.com/Articles.aspx/JobServe-Job-Search-iPhone-App-v20-Released" target="_blank"&gt;iPhone app&lt;/a&gt; is approaching its 1 millionth search since version 2.0 was launched in March.&amp;#160; Our &lt;a href="http://www.labs.jobserve.com/Articles.aspx/Search-and-Apply-for-Jobs-from-anywhere" target="_blank"&gt;dedicated iPad app&lt;/a&gt; continues to be the only fully featured, iPad designed Job Search app and has a loyal following with nearly 90,000 searches since its launch on the day iPads came into this world.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;So what next for JobServe Connect?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As the name implies, we want to connect users to JobServe and eventually users to each other. The suite of tools has now ventured to recruiters, with &lt;a href="http://www.headhunter.jobserve.com/homepage.aspx" target="_blank"&gt;JobServe Connect Headhunter&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Recruiters can now feel the benefit of a full candidate search tool at their fingertips no matter where they are. For Job Seekers this is a great enhancement to their chances of finding a new career as recruiters will have access to your CV (you must select your CV to be distributed for this to happen) and match you to potential roles quickly and simply.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.headhunter.jobserve.com/homepage.aspx" target="_blank"&gt;JobServe Connect Headhunter&lt;/a&gt; is currently a Mobile designed website. Later in the year a dedicated iPhone/iPad app will join the suite.&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="3"&gt;Stayed tuned though as v3.0 of the Job Search app for the iPhone is about to make an appearance any day now – you can search by industry and select which CV to use in your applications – to name but two new features.&lt;/font&gt;&lt;/p&gt;</content></entry><entry><id>0676fe5f-1a00-4107-9c9f-80782fa61ff9</id><title type="text">Search and Apply for Jobs from anywhere</title><updated>2010-09-02T23:27:00+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Search-and-Apply-for-Jobs-from-anywhere"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;&lt;strong&gt;Jobserve Connect – Job Search&lt;/strong&gt; is the fully functional job search and job apply application for mobile devices. We have dedicated apps for &lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=335516223&amp;amp;mt=8&amp;amp;s=143441" target="_blank"&gt;iPhone&lt;/a&gt; and &lt;a href="itms://itunes.apple.com/us/app/jobserve-connect-jobs/id364895575?mt=8" target="_blank"&gt;iPad&lt;/a&gt; as well as the new &lt;a href="http://www.mobile.jobserve.com" target="_blank"&gt;mobile website&lt;/a&gt; to cover this and other devices.&lt;/p&gt;  &lt;p&gt;Our apps are free on iTunes and are often updated. The &lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=335516223&amp;amp;mt=8&amp;amp;s=143441" target="_blank"&gt;iPhone app&lt;/a&gt; currently is version 2.1 and version 3.0 is due any day now, so download it today and you will get the latest update as soon as it is available.&lt;/p&gt;  &lt;p&gt;Our iPad app remains the only &lt;a href="itms://itunes.apple.com/us/app/jobserve-connect-jobs/id364895575?mt=8" target="_blank"&gt;dedicated iPad Job Search&lt;/a&gt; app and uses the full screen capabilities to display the jobs.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Key Features of the App&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Automatic Search History&lt;/strong&gt; – Saves search criteria and allows users to rerun searches with one simple click. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Search Assist&lt;/strong&gt; – A simple 5-step wizard to help users build a quality search and remembers selections between sessions. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Store Jobs as Favourites&lt;/strong&gt; – Allows simple collection of jobs to be emailed at a later time. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Suggested Jobs&lt;/strong&gt; – Provides custom list of job recommendations based on previous searches and activity. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Salary Search using a two ended slider&lt;/strong&gt; – Be as specific as you need. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.labs.jobserve.com/files.aspx/USA16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="USA1_thumb4" border="0" alt="USA1_thumb4" src="http://www.labs.jobserve.com/files.aspx/USA1thumb4f525d2b5-0c16-470a-9534-7aab0bbf69a3.png" width="326" height="431" /&gt;&lt;/a&gt;&lt;a href="http://www.labs.jobserve.com/files.aspx/USA26.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="USA2_thumb4" border="0" alt="USA2_thumb4" src="http://www.labs.jobserve.com/files.aspx/USA2thumb4c49cb65d-0055-4212-b675-8bee4f040b5b.png" width="326" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.labs.jobserve.com/files.aspx/UK1Sm3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="UK_1_Sm_thumb1" border="0" alt="UK_1_Sm_thumb1" src="http://www.labs.jobserve.com/files.aspx/UK1Smthumb1de3823c6-94fa-408a-9532-01a1815d4e64.png" width="237" height="337" /&gt;&lt;/a&gt;&lt;a href="http://www.labs.jobserve.com/files.aspx/UK4Sm3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="UK_4_Sm_thumb1" border="0" alt="UK_4_Sm_thumb1" src="http://www.labs.jobserve.com/files.aspx/UK4Smthumb14999a62d-7be1-4bc5-bc57-d95e8a36f13d.png" width="236" height="336" /&gt;&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>a14bd571-3d2c-461e-b32b-e379614cb759</id><title type="text">JobServe iPhone App Update</title><updated>2010-07-07T09:19:00+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/JobServe-iPhone-App-Update"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;Recently Apple released the latest update to their iPhone operating system, OS4. Despite the fact that the JobServe app was designed to work with OS2.2 and above, this latest release has caused problems. We immediately tracked down the problems to two key areas – the Jobs Near Me functionality and paging between search results. It would appear that possible changes caused by the fact OS4 supports multi-tasking had caused these issues.&lt;/p&gt;  &lt;p&gt;During this time OS3.13 or below continued to function correctly.&lt;/p&gt;  &lt;p&gt;An update was made and submitted to Apple on June 30th. We are pleased to confirm that the fixed version is now available on the iTunes App Store and you can either download this again or await an update from the App Store on your iPhone.&lt;/p&gt;  &lt;p&gt;During this time the iPad version of JobServe Connect continued to work correctly.&lt;/p&gt;  &lt;p&gt;Here are quick download links:&lt;/p&gt;  &lt;p&gt;&lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=335516223&amp;amp;mt=8&amp;amp;s=143441" target="_blank"&gt;JobServe Connect Job Search for iPhone v2.1 (OS4 Compatible)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="itms://itunes.apple.com/us/app/jobserve-connect-jobs/id364895575?mt=8" target="_blank"&gt;JobServe Connect Job Search for iPad v1.0&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>f3c619c0-3955-4c93-918e-dbc02c430aae</id><title type="text">JobServe Mobile Job Search launch</title><updated>2010-06-07T22:11:00+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/JobServe-Mobile-Job-Search-launch"/><category term="Connect: Mobile Job Search"/><content type="html">&lt;p&gt;We are pleased to announce a massive update to our Mobile website. As part of the JobServe Connect series which already has &lt;a href="http://www.labs.jobserve.com/Articles.aspx/JobServe-Job-Search-iPhone-App-v20-Released" target="_blank"&gt;iPhone&lt;/a&gt; and &lt;a href="http://www.labs.jobserve.com/Articles.aspx/Job-hunting-features-at-your-fingertips" target="_blank"&gt;iPad&lt;/a&gt; Job Search applications, we now have our newest member of this suite of products.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mobile.jobserve.com" target="_blank"&gt;JobServe Mobile&lt;/a&gt; was first launched in 2001 and we have now updated the design and functionality so it is more in line with the apps already available for the &lt;a href="http://www.labs.jobserve.com/Articles.aspx/JobServe-Job-Search-iPhone-App-v20-Released" target="_blank"&gt;iPhone&lt;/a&gt; and &lt;a href="http://www.labs.jobserve.com/Articles.aspx/Job-hunting-features-at-your-fingertips" target="_blank"&gt;iPad&lt;/a&gt;. Now you can have full Job Search and Job Application functionality on a Blackberry, Nokia, Android based, Windows Mobile and many, many other devices.&lt;/p&gt;  &lt;p&gt;Take it for a spin, while you sit with a coffee in one of the many coffee shops offering fast internet access and apply for your next job quickly and easily.&lt;/p&gt;  &lt;p&gt;Quick Feature List:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Full Job Search with proximity distance option, salary search and standard sort order / days old selection.&lt;/li&gt;    &lt;li&gt;Email jobs to your inbox – apply later.&lt;/li&gt;    &lt;li&gt;Log in to your online profile.&lt;/li&gt;    &lt;li&gt;Apply for jobs in as little as two clicks. If you have already answered the questions – no need to answer again.&lt;/li&gt;    &lt;li&gt;Run any of your saved searches from your online profile.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.labs.jobserve.com/files.aspx/photo2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="photo" border="0" alt="photo" src="http://www.labs.jobserve.com/files.aspx/photothumb.jpg" width="293" height="438" /&gt;&lt;/a&gt; &lt;a href="http://www.labs.jobserve.com/files.aspx/photo-22.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="photo 2" border="0" alt="photo 2" src="http://www.labs.jobserve.com/files.aspx/photo-2thumb.jpg" width="292" height="436" /&gt;&lt;/a&gt; &lt;a href="http://www.labs.jobserve.com/files.aspx/photo-32.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="photo 3" border="0" alt="photo 3" src="http://www.labs.jobserve.com/files.aspx/photo-3thumb.jpg" width="291" height="435" /&gt;&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>506790a4-85d3-4343-be88-b0a7fa0c564d</id><title type="text">Job hunting features at your fingertips</title><updated>2010-05-04T14:05:00+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Job-hunting-features-at-your-fingertips"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p align="center"&gt;&lt;font size="4"&gt;&lt;strong&gt;Search and Apply for Jobs from the convenience of your iPhone or iPad&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;JobServe Connect – Job Search&lt;/strong&gt; App is a fully functional job application system that enables users to quickly search and apply to jobs in the US. The app is available for &lt;a href="itms://itunes.apple.com/us/app/jobserve-connect-jobs/id364895575?mt=8" target="_blank"&gt;download through the itunes store&lt;/a&gt; at no charge.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Key Features of the App&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Automatic Search History&lt;/strong&gt; – Saves search criteria and allows users to rerun searches with one simple click. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Search Assist&lt;/strong&gt; – A simple 5-step wizard to help users build a quality search and remembers selections between sessions. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Store Jobs as Favorites&lt;/strong&gt; – Allows simple collection of jobs to be emailed at a later time. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Suggested Jobs&lt;/strong&gt; – Provides custom list of job recommendations based on previous searches and activity. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Salary Search using a two ended slider&lt;/strong&gt; – Be as specific as you need. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="itms://itunes.apple.com/us/app/jobserve-connect-jobs/id364895575?mt=8" target="_blank"&gt;&lt;font size="4"&gt;Download NOW&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.labs.jobserve.com/files.aspx/USA12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="USA1" border="0" alt="USA1" src="http://www.labs.jobserve.com/files.aspx/USA1thumb.png" width="337" height="448" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://www.labs.jobserve.com/files.aspx/USA22.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="USA2" border="0" alt="USA2" src="http://www.labs.jobserve.com/files.aspx/USA2thumb.png" width="338" height="449" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;iPad WiFi and WiFi+3G versions are available in the US, however Apple have slated a release globally from late May. The JobServe app is available in all iTunes stores and can be downloaded as soon as the iTunes iPad App Store opens in your territory.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For more information on advertising a job on JobServe and getting your job in front of &lt;a href="http://www.jobserve.com/QuickJobProductSelect.aspx?labs=1" target="_blank"&gt;thousands of active iPhone and iPad users visit here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Search thousands of current jobs now on the &lt;a href="http://www.jobserve.com/?labs=2" target="_blank"&gt;Main JobServe site&lt;/a&gt;.&lt;/p&gt;</content></entry><entry><id>57bc22e3-6fbf-4657-b1f8-aeaf88ca94de</id><title type="text">Now available on the Apple iPad</title><updated>2010-04-02T23:28:00+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Now-available-on-the-Apple-iPad"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;The iPad is released tomorrow by &lt;a href="http://www.apple.com/ipad/" target="_blank"&gt;Apple&lt;/a&gt; and we are pleased to announce that the popular JobServe iPhone Job Search app is now available on the iPad. All the great features you have come to expect from the latest v2 iPhone app are presented on the iPad whilst maximising usability and flexibility with the much larger screen.&lt;/p&gt;  &lt;p&gt;If you have ordered an iPad or are one of the keen buyers to snap one up on launch day – take a look and use the new app to help find your next job.&lt;/p&gt;  &lt;p&gt;&lt;a href="itms://itunes.apple.com/us/app/jobserve-connect-jobs/id364895575?mt=8" target="_blank"&gt;Direct link to the App Store here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Remember we want feedback on this and any other development by JobServe. &lt;a href="http://www.yourvoice.jobserve.com" target="_blank"&gt;www.yourvoice.jobserve.com&lt;/a&gt; is the place to talk directly to us.&lt;/p&gt;</content></entry><entry><id>c459b1be-d2dd-404b-ba44-f44ad7b4ed3d</id><title type="text">JobServe Job Search iPhone App v2.0 Released</title><updated>2010-03-11T18:00:00Z</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/JobServe-Job-Search-iPhone-App-v20-Released"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;The newest version of &lt;a href="http://www.labs.jobserve.com/Categories.aspx/Connect-iPhone-Job-Search" target="_blank"&gt;JobServe Connect – Job Search&lt;/a&gt; is now available on Apple iTunes.Check out the &lt;a href="http://www.labs.jobserve.com/Articles.aspx/Job-Search-v20-to-be-released-very-soon" target="_blank"&gt;features here&lt;/a&gt; and &lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=335516223&amp;amp;mt=8&amp;amp;s=143441" target="_blank"&gt;download it here&lt;/a&gt; (this link will open iTunes)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=335516223&amp;amp;mt=8&amp;amp;s=143441"&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" title="iPhoneJob_banner" alt="iPhoneJob_banner" src="http://www.labs.jobserve.com/files.aspx/iPhoneJobbanner3.gif" width="468" height="60" /&gt;&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>33286877-d563-44fd-86e4-84b13a487628</id><title type="text">Job Search v2.0 to be released very soon</title><updated>2010-03-09T00:14:00Z</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Job-Search-v20-to-be-released-very-soon"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;We are pleased to announce that version 2.0 of our successful &lt;a href="http://www.labs.jobserve.com/Categories.aspx/Connect-iPhone-Job-Search" target="_blank"&gt;Job Search iPhone app&lt;/a&gt; is to be released very soon. We have listened to all the feedback over the last five months and believe that the new version of the JobServe Connect – Job Search iPhone app will be even more successful. Here on JobServe Labs we would like to give you a preview of what to expect and also a few screenshots of what is to come.&lt;/p&gt;  &lt;p&gt;This release contains a major upgrade in new features, suggested updates and fixes. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font color="#008080" size="4"&gt;New Features&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Salary search option provided using our two ended slider – be as specific as you need. &lt;/li&gt;    &lt;li&gt;Refine your search directly from the search results screen. &lt;/li&gt;    &lt;li&gt;Apply for jobs quickly (see below for more details) &lt;/li&gt;    &lt;li&gt;Register on JobServe quickly and easily via your iPhone. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font color="#008080" size="4"&gt;Link to Online Job Seeker record on JobServe&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Log in to your website account. &lt;/li&gt;    &lt;li&gt;View your latest jobs applied for. &lt;/li&gt;    &lt;li&gt;Run any of your Saved Searches from your online account. &lt;/li&gt;    &lt;li&gt;Get useful candidate messages from your online account. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font color="#008080" size="4"&gt;Applying For Jobs&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;JobServe announces the first fully featured Job Application system to be released on the iPhone – no web pages to navigate, completely in the app. This system fully compliments the application system provided by JobServe on the website.&lt;/p&gt;  &lt;p&gt;You will need a candidate record and a CV on your account. You can simply log in to your account via a standard web browser and upload a CV or take advantage of the AddMyCV feature – details of which are provided on the iPhone app.&lt;/p&gt;  &lt;p&gt;Once eligible you will be able to apply for jobs in as little as two taps. If you have answered all required questions before, you can simple review and tap &amp;quot;Apply&amp;quot;. However to change any answers simple review each question in our easy step by step process and then Apply.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font color="#008080" size="4"&gt;Useful updates to existing features&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Main search screen remembers options between sessions. &lt;/li&gt;    &lt;li&gt;Search assist remembers selections between sessions. &lt;/li&gt;    &lt;li&gt;Fields are better aligned when keyboard is shown. &lt;/li&gt;    &lt;li&gt;Useful keyboard toolbar buttons aid navigation. &lt;/li&gt;    &lt;li&gt;Better feedback of activity via “Please Wait” dialog. &lt;/li&gt;    &lt;li&gt;Auto scroll results to the top when paging. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And much, much more…&lt;/p&gt;  &lt;p&gt;Don’t delay, &lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=335516223&amp;amp;mt=8&amp;amp;s=143441" target="_blank"&gt;download the app now&lt;/a&gt; and get the update from Apple as soon as it is available on iTunes.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.labs.jobserve.com/files.aspx/UK1Sm2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="UK_1_Sm" border="0" alt="UK_1_Sm" src="http://www.labs.jobserve.com/files.aspx/UK1Smthumb.png" width="213" height="304" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://www.labs.jobserve.com/files.aspx/UK2Sm2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="UK_2_Sm" border="0" alt="UK_2_Sm" src="http://www.labs.jobserve.com/files.aspx/UK2Smthumb.png" width="211" height="301" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://www.labs.jobserve.com/files.aspx/UK3Sm2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="UK_3_Sm" border="0" alt="UK_3_Sm" src="http://www.labs.jobserve.com/files.aspx/UK3Smthumb.png" width="211" height="302" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://www.labs.jobserve.com/files.aspx/UK4Sm2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="UK_4_Sm" border="0" alt="UK_4_Sm" src="http://www.labs.jobserve.com/files.aspx/UK4Smthumb.png" width="211" height="301" /&gt;&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>b03ee0f2-a1b3-4a13-b116-8c486bc94920</id><title type="text">Your Voice: let your voice be heard</title><updated>2010-03-02T22:28:00Z</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Your-Voice-let-your-voice-be-heard"/><category term="Your Voice"/><content type="html">&lt;p&gt;Today we are pleased to launch the newest member of the JobServe Labs project – &lt;a href="http://www.yourvoice.jobserve.com" target="_blank"&gt;Your Voice&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;JobServe wants to make the features, products and services available to recruiters and job seekers as useful and effective as possible. The best way to achieve this is to listen to recruiters and job seekers – so &lt;a href="http://www.yourvoice.jobserve.com" target="_blank"&gt;Your Voice&lt;/a&gt; is your opportunity to influence what we have to offer to you.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Our first release of the &lt;a href="http://www.labs.jobserve.com/Articles.aspx/Job-Search-iPhone-App-Update" target="_blank"&gt;JobServe Connect – Job Search iPhone app&lt;/a&gt; generated lots of very good feedback and questions which can now be presented on &lt;a href="http://www.yourvoice.jobserve.com/" target="_blank"&gt;Your Voice&lt;/a&gt; for everyone to read and join in.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.yourvoice.jobserve.com/" target="_blank"&gt;Your Voice&lt;/a&gt; is a simple discussion and comment forum where we will start some discussions on topics but more importantly so can YOU.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Get started with the following new discussions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.yourvoice.jobserve.com/Pages/YourVoice_DiscussionDetails.aspx?id=B850D9" target="_blank"&gt;Making Job Searching even better&lt;/a&gt; – have views on Job Search – let us know.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.yourvoice.jobserve.com/Pages/YourVoice_DiscussionDetails.aspx?id=D96088" target="_blank"&gt;Come and meet “Your Voice” in London&lt;/a&gt; – Your Voice is at a career event but what are your views on events?&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;“Let your voice be heard”&lt;/p&gt;</content></entry><entry><id>931c351e-3181-40e0-bd24-ea486b85b959</id><title type="text">We help Microsoft fix Visual 2010 Help Manager</title><updated>2010-02-10T11:33:56Z</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/We-help-Microsoft-fix-Visual-2010-Help-Manager"/><category term="Technical"/><content type="html">&lt;p&gt;In a previous post we described &lt;a href="http://www.labs.jobserve.com/Articles.aspx/VS2010-Beta-2--Fatal-Error-Occurred-installing-Help" target="_blank"&gt;a bug in the VS2010 Beta 2 MSDN product which prevents you from getting hold of help collections etc when you sit behind an Http proxy&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In that post we provided a solution which involved leveraging Fiddler’s ability to chain together proxy authentication on an application’s behalf.&lt;/p&gt;  &lt;p&gt;We also spotted &lt;a title="Another user on MSDN forums has a problem with MSDN Help behind a proxy" href="http://social.msdn.microsoft.com/Forums/en-US/setupprerelease/thread/a12a4ff0-add0-451f-a299-d45520f47db4/" target="_blank"&gt;this post on MSDN Forums&lt;/a&gt; and posted an answer indicating a possible solution for the person who opened the issue.&lt;/p&gt;  &lt;p&gt;As you’ll notice from the bottom post – a request was made by an employee of Microsoft to see if we could help them test a fix that they had in mind.&amp;#160; We did; the fix didn’t work completely, but we were then able to diagnose exactly why the fix didn’t work and have subsequently discovered how to make the Beta 2 MSDN 2010 Help Library Manager &lt;em&gt;without&lt;/em&gt; having to use Fiddler.&amp;#160; Based on our investigation, the team at Microsoft are now working on a fix – and might already have applied it in the &lt;a href="http://reddevnews.com/articles/2010/02/09/microsoft-releases-vs2010-rc.aspx" target="_blank"&gt;Release Candidate of VS2010 – which released in the last week&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Use at your own risk!&lt;/h2&gt;  &lt;p&gt;Before we go into the details, it must be stressed that this fix is not offered officially by Microsoft and therefore carries no guarantees from them.&amp;#160; We also make no guarantees about this fix either – it will involve changing registry settings and if this turns out to break anything else on your machine, then we will accept no responsibility for that.&amp;#160; It’s your choice to follow our directions here!&lt;/p&gt;  &lt;h3&gt;Step 1&lt;/h3&gt;  &lt;p&gt;Modify the HelpLibManager.exe.config file found in &lt;font color="#008000"&gt;Program Files &lt;em&gt;[&lt;strong&gt;(x86)&lt;/strong&gt; if on a 64 bit box]&lt;/em&gt;\Microsoft Help\v3.0&lt;/font&gt; and add the following xml inside the &amp;lt;configuration /&amp;gt; node:&lt;/p&gt;  &lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;system.net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;defaultProxy&lt;/span&gt; &lt;span style="color: #ff0000"&gt;useDefaultCredentials&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;defaultProxy&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;system.net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Save the config file.&lt;/p&gt;

&lt;p&gt;On its own, this fix allows the help manager to ‘see’ the collections that are available for download – but it does not actually fix the problem of the download itself.&lt;/p&gt;

&lt;h3&gt;Step 2&lt;/h3&gt;

&lt;p&gt;This is the messy bit.&amp;#160; &lt;/p&gt;

&lt;p&gt;Open up the Registry Editor and make sure that registry value &lt;strong&gt;HKLM\Software\Microsoft\Windows\CurrentVersion\BITS\UseLMCompat &lt;/strong&gt;is set to zero (the reason why is explained in a moment).&amp;#160; If you need to change it, you should make a note of the previous value – or better yet, create a System Restore Point.&lt;/p&gt;

&lt;p&gt;Restart the Background Intelligent Transfer Service, and then start up the help library manager.&amp;#160; It should all now work without any problems – assuming you have internet connectivity at all; and that your user name and password allow you through the proxy in the first place :)&lt;/p&gt;

&lt;h2&gt;Why does it work?&lt;/h2&gt;

&lt;p&gt;We ‘discovered’ that Help Library Manager uses &lt;a title="MSDN Topic on BITS" href="http://msdn.microsoft.com/en-us/library/aa362708(VS.85).aspx" target="_blank"&gt;BITS (Background Intelligent Transfer Service)&lt;/a&gt; to initiate and manage the actual downloads of the content.&amp;#160; Presumably this is because the files are typically rather large.&amp;#160; This runs in a separate process and is communicated with over a COM interface, therefore the configuration file fix has no effect on that.&lt;/p&gt;

&lt;p&gt;After some poking and prodding, we discovered that when a BITS transfer is initiated, &lt;a title="MSDN topic on Authentication with BITS transfers" href="http://msdn.microsoft.com/en-us/library/aa362781(VS.85).aspx" target="_blank"&gt;the caller has the opportunity to specify the credentials to be used for the network connection&lt;/a&gt;.&amp;#160; Working on the basis that the code in the Help Library can’t be setting these credentials (otherwise it would work), we looked for a way to get BITS to use default credentials.&amp;#160; The article from the last link above provides the answer to that – which yields the registry hack.&lt;/p&gt;

&lt;p&gt;Be aware that modifying this registry value affects all software that uses BITS – and therefore it’s just possible that other things might stop working as a result.&lt;/p&gt;

&lt;p&gt;As we mentioned earlier – we don’t know if the bug has been redressed in the RC of Visual Studio 2010 – our findings, including this fix, were submitted to Microsoft on the 27th January – so it’s possible it was too late.&lt;/p&gt;

&lt;p&gt;Hopefully, however, it’ll be fixed by the final release date!&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;That’s it for now, but stay tuned: We have some very exciting news on the way in the next couple of weeks; but we’re not allowed to talk about it yet ;)&lt;/p&gt;</content></entry><entry><id>71ecacda-735f-4597-a3ca-4e928b134f25</id><title type="text">Link Tag in Content Control not created as HtmlLink</title><updated>2009-11-25T12:31:46Z</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Link-Tag-in-Content-Control-not-created-as-HtmlLink"/><category term="Technical"/><content type="html">&lt;p&gt;The Asp.Net &lt;a title="MSDN Topic about the HtmlHead class" href="http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlhead.aspx" target="_blank"&gt;System.Web.UI.WebControls.HtmlHead&lt;/a&gt; class is clever, especially when it comes to stylesheet &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; tags in master pages, since it &lt;a title="Asp Alliance article about Url Rebasing in Asp.Net 2.0" href="http://aspalliance.com/1852_Url_Rebasing_in_ASPNET_20.1" target="_blank"&gt;magically rebases them&lt;/a&gt; (using &lt;a title="MSDN topic on Control.ResolveClientUrl" href="http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveclienturl.aspx" target="_blank"&gt;Control.ResolveClientUrl&lt;/a&gt;) to be relative to the path of the page that is executing instead of the master page.&amp;#160; This is especially necessary when a content page is declared in a different folder to its master page, because any CSS references are unlikely to work except by pure fluke.&lt;/p&gt;  &lt;p&gt;With the advent of Visual Studio 2008, it has become common practise to have a content placeholder in a master page’s head section, which allows the page designer to add extra meta data, script references and CSS links on a content page as well.&amp;#160; To be fair, this process started almost as soon as master pages came into being – except &lt;a title="K Scott Allen shows how to use a content control in the Head section back in 2006" href="http://odetocode.com/Blogs/scott/archive/2006/04/11/the-contentplaceholder-not-just-for-content.aspx" target="_blank"&gt;Visual Studio 2005 did not have design-time support for it, a deficit that was much bemoaned by K. Scott Allen at the time&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This website uses that ability so that our master page contains our common CSS references, but some of our content pages then have their own script references and styles.&amp;#160; In order to get around the url-rebasing issue, we use a &lt;strong&gt;&amp;lt;base /&amp;gt;&lt;/strong&gt; tag at the top of every page, so that we can use root-relative links for our urls, css and javascript references, then the browser will happily get them from the correct place.&amp;#160; &lt;a title="Our most recent site bug fix" href="http://www.labs.jobserve.com/Articles.aspx/Website-update-16th-October-2009" target="_blank"&gt;A recent article detailing a fix for a small bug with the Atom Feed link&lt;/a&gt; on one of our pages details this process a bit more.&lt;/p&gt;  &lt;p&gt;Now we’re working on a new site, that will be using the &lt;a title="The Official ASP.Net site" href="http://www.asp.net/mVC/" target="_blank"&gt;Asp.Net MVC 1.0 Framework&lt;/a&gt; (and possibly 2.0 if it goes live before we’re finished).&amp;#160; This brings even more potential problems with relative URL links, since every page URL is actually a folder.&amp;#160; Although the &lt;strong&gt;&amp;lt;base/&amp;gt;&lt;/strong&gt; tag is a solution, it’s not perfect since you then have to define a way to actually format out that base url.&amp;#160; Many people use configuration, but it royally sucks for this, as it means that every time you move the site to a different machine (different developer boxes, QA box, staging box etc) or from a virtual directory to a website, you have to update the configuration.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Magic URL rebasing – the good&lt;/h2&gt;  &lt;p&gt;As mentioned in the introduction, any &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; tag that is placed &lt;strong&gt;&lt;em&gt;directly inside&lt;/em&gt;&lt;/strong&gt; the Head control of an Asp.Net page will be turned into an &lt;a title="HtmlLink Declarative Syntax on MSDN" href="http://msdn.microsoft.com/en-us/library/ms228307.aspx" target="_blank"&gt;HtmlLink control&lt;/a&gt; – the magic for this is done in the &lt;a title="HtmlHeadBuilder control on MSDN" href="http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlheadbuilder.aspx" target="_blank"&gt;HtmlHeadBuilder&lt;/a&gt;’s &lt;a title="The GetChildControlType method of HtmlHeadBuilder" href="http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlheadbuilder.getchildcontroltype.aspx" target="_blank"&gt;GetChildControlType method&lt;/a&gt;: &lt;/p&gt;  &lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; Type GetChildControlType(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; tagName, IDictionary attribs)
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Equals(tagName, &amp;quot;&lt;span style="color: #8b0000"&gt;title&lt;/span&gt;&amp;quot;, StringComparison.OrdinalIgnoreCase))
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(HtmlTitle);
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Equals(tagName, &amp;quot;&lt;span style="color: #8b0000"&gt;link&lt;/span&gt;&amp;quot;, StringComparison.OrdinalIgnoreCase))
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(HtmlLink);
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Equals(tagName, &amp;quot;&lt;span style="color: #8b0000"&gt;meta&lt;/span&gt;&amp;quot;, StringComparison.OrdinalIgnoreCase))
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(HtmlMeta);
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;}
&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Very simple indeed.&amp;#160; As you can see, in order to get an HtmlLink created in place of a standard &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; tag within the head, you have to do, well, nothing at all (not even make it &lt;strong&gt;runat=server&lt;/strong&gt;).&amp;#160; When the HtmlLink control renders it’s output, instead of dumbly rendering the attributes (i.e. the &lt;strong&gt;href&lt;/strong&gt;, &lt;strong&gt;rel&lt;/strong&gt; etc) it does this: &lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RenderAttributes(HtmlTextWriter writer)
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.IsNullOrEmpty(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Href))
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;        &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.Attributes[&amp;quot;&lt;span style="color: #8b0000"&gt;href&lt;/span&gt;&amp;quot;] = &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.ResolveClientUrl(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Href);
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.RenderAttributes(writer);
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;}&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;a title="Control.ResolveClientUrl on MSDN" href="http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveclienturl.aspx" target="_blank"&gt;ResolveClientUrl&lt;/a&gt; method is used to calculate the actual relative path to a resource, given a template-relative path (e.g. “&lt;em&gt;~/Pages/page.aspx&lt;/em&gt;”, “&lt;em&gt;~/Controls/control.ascx&lt;/em&gt;”, a master page virtual path or whatever) – which is retrieved from the first control up the parent-child hierarchy of the page that has one of these paths.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Magic URL rebasing – the bad&lt;/h2&gt;

&lt;h3&gt;&amp;#160;&lt;/h3&gt;

&lt;h3&gt;&amp;lt;script&amp;gt; tags don’t get rebased - ever&lt;/h3&gt;

&lt;p&gt;There is one tag in particular that is missing from the logic in the above code - “script”.&amp;#160; Yes, that’s right, whilst &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; tags will be magically rebased, &lt;strong&gt;&amp;lt;script&amp;gt;&lt;/strong&gt; references will not – which is indeed a stark omission from the Asp.Net framework.&amp;#160; From the master page point of view, this means that you cannot really have &lt;strong&gt;&amp;lt;script&amp;gt;&lt;/strong&gt; references in your master page’s header, unless all content pages will be in the same relative location from the target javascript file.&lt;/p&gt;

&lt;p&gt;This problem can be solved in a couple of different ways.&amp;#160; The first would be to pre-process the page content before it finally gets rendered, searching for any &lt;strong&gt;&amp;lt;script&amp;gt; &lt;/strong&gt;references, parsing them manually, using Control.ResolveClientUrl to get the target script reference and then writing the fixed URL back to the content (indeed, this approach has been taken with a fix adopted by one frustrated Asp.Net user; see later).&lt;/p&gt;

&lt;p&gt;However, the other approach is to write a simple server-side control to do it:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// Mimics the HtmlLink control - i.e. calling ResolveClientUrl at render time - &lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// except it's done on the 'src' attribute value.  Since HtmlLink writes the resolved&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// path back to it's Href member, this one does the same.&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; HtmlScript : HtmlGenericControl
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; HtmlScript() : &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;(&amp;quot;&lt;span style="color: #8b0000"&gt;script&lt;/span&gt;&amp;quot;)
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  {
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  }
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; HtmlScript(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; tag) : &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;(tag)
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  }
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Src
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;      &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Attributes[&amp;quot;&lt;span style="color: #8b0000"&gt;src&lt;/span&gt;&amp;quot;];
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;      &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Attributes[&amp;quot;&lt;span style="color: #8b0000"&gt;src&lt;/span&gt;&amp;quot;] = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  }
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RenderAttributes(HtmlTextWriter writer)
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    Src = ResolveClientUrl(Src);
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.RenderAttributes(writer);
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  }
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;}&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;With this in place, you simply use the &lt;strong&gt;&amp;lt;#@ Register &lt;/strong&gt;directive, or register a site-wide prefix via the web.config, to bring in a tag-prefix (e.g. “asp2”) for the control and then, in your ASPX source you change your &lt;strong&gt;&amp;lt;script&amp;gt;&lt;/strong&gt; to:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp2&lt;/span&gt;:&lt;span style="color: #ff0000"&gt;HtmlScript&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;../myscript.js&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;language&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp2&lt;/span&gt;:HtmlScript&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Okay, so this isn’t a perfect solution – a site-wide refactoring like this could take some time!&amp;#160; However, the best it yet to come…&lt;/p&gt;

&lt;h3&gt;Content controls in the head – even &amp;lt;link&amp;gt;s don’t get rebased&lt;/h3&gt;

&lt;p&gt;This is possibly the biggest problem, when you use a content control to inject extra links, references or whatever into a page head section from a content form, the magic CSS &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; rebasing no longer works.&amp;#160; Why?&amp;#160; The clue is in the above code snippet from HtmlHeadBuilder.GetChildControlType.&amp;#160; Consider the following master page, and content page:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Master Page &amp;lt;head&amp;gt; section: &lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;ContentPlaceHolder&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;TitleContent&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;link&lt;/span&gt; &lt;span style="color: #ff0000"&gt;href&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;../../Content/Site.css&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;rel&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;ContentPlaceHolder&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;CustomHeadContent&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Content Page Content Placeholder: &lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Content&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;customHead&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ContentPlaceHolderID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;CustomHeadContent&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;link&lt;/span&gt; &lt;span style="color: #ff0000"&gt;href&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;../../Content/Site.css&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;rel&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Okay, so in this example, both pages are referencing the same stylesheet, so it’s slightly contrived.&amp;#160; However, assuming that the css files are in &lt;strong&gt;&lt;em&gt;~/Content/&lt;/em&gt;&lt;/strong&gt;, the master page is in the &lt;strong&gt;&lt;em&gt;~/pages/masters/&lt;/em&gt;&lt;/strong&gt; folder, and the content page is in the &lt;strong&gt;&lt;em&gt;~/pages/content/&lt;/em&gt;&lt;/strong&gt; folder, this will work fine when it is run.&lt;/p&gt;

&lt;p&gt;However, if we’re using something like MVC (or using the &lt;a title="HttpRequest.PathInfo - useful for creating beautified urls" href="http://msdn.microsoft.com/en-us/library/system.web.httprequest.pathinfo.aspx" target="_blank"&gt;HttpRequest.PathInfo property&lt;/a&gt; like we do for our articles, projects etc) in order to beautify your urls, then we will run into problems.&amp;#160; For example, if the content page in question is actually displayed in the browser with the url “&lt;strong&gt;&lt;em&gt;/home/&lt;/em&gt;&lt;/strong&gt;”, then the CSS link rendered from the head on the master page will correctly come out as “&lt;strong&gt;&lt;em&gt;../content/site.css&lt;/em&gt;&lt;/strong&gt;”, however the CSS link from the page’s content control will be left untouched (indeed it will be rendered as a literal), and will generate a 404 when it hits the browser.&lt;/p&gt;

&lt;p&gt;This is because in order for the &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; markup in the content control to be turned into an HtmlLink, instead of being left as raw markup, the control builder that parses the &lt;strong&gt;&amp;lt;asp:Content&amp;gt;&lt;/strong&gt; control (ContentBuilderInternal – no MSDN link because it’s understandably undocumented!) would have to have the same logic in it that the head section does – since the ASP.Net build engine sees the &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; tag as a child of the Content Control, not the HtmlHead that the content eventually gets merged into.&lt;/p&gt;

&lt;p&gt;This is clearly a bug, or at the very least an oversight, in the Asp.Net framework – and has been reported on &lt;a title="ContentPlaceHolder inside the Head Element bug on Connect" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=273683#tabs" target="_blank"&gt;MS Connect by Nathanael Jones&lt;/a&gt;, who came up with the &lt;a title="A solution to inconsistent url rebasing" href="http://nathanaeljones.com/146/referencing-stylesheets-scripts-from-content-pages/" target="_blank"&gt;aforementioned page-parsing solution on his blog&lt;/a&gt;.&amp;#160; However, this solution does not fix design-time problems (since the VS designer doesn’t run all of the page code when rendering it in the designer), and it is also quite a weighty solution which will inevitably slow down page rendering; our sites get tens of thousands of hits per day, and adding extra load on the servers is just not an option.&lt;/p&gt;

&lt;h2&gt;Our solution&lt;/h2&gt;

&lt;p&gt;Our solution fixes rebasing of all css &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; tags in the head of content pages, and it also automatically picks up and rebases all &lt;strong&gt;&amp;lt;script&amp;gt; &lt;/strong&gt;references as well.&amp;#160; You’ll need the HtmlScript control, whose source code was presented earlier on; then add this code:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// It's a placeholder, really - it simply tells the framework to use the RebasingContainerBuilder to &lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// create the controls that will emit the html.  Then, the designer is set to ControlDesigner - &lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// the same one that the ContentControl uses.&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// That ensures design-time support for the CSS and Javascript links on content pages.&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;[ControlBuilder(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(RebasingContainerBuilder)), 
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  Designer(&amp;quot;&lt;span style="color: #8b0000"&gt;System.Web.UI.Design.ControlDesigner, System.Design, &lt;/span&gt;&amp;quot; + 
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &amp;quot;&lt;span style="color: #8b0000"&gt;Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&lt;/span&gt;&amp;quot;), 
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  ConstructorNeedsTag(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;)]
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; RebasingContainer : HtmlGenericControl
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; RebasingContainer()
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  }
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RenderBeginTag(System.Web.UI.HtmlTextWriter writer)
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  {  &lt;span style="color: #008000"&gt;/*doesn't render it's own tag*/&lt;/span&gt; }
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RenderEndTag(System.Web.UI.HtmlTextWriter writer)
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  {&lt;span style="color: #008000"&gt;/*doesn't render it's own tag*/&lt;/span&gt;}
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// This class is almost identical to HtmlHeadBuilder.  It's purpose to ensure that embedded&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// links and script tags are always rebased for the client during rendering.&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// The HtmlHead control does this for CSS link tags only, and the functionality is lost &lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// on content controls on content forms.&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// This builder is used by the &amp;lt;see cref=&amp;quot;RebasingContainer&amp;quot;/&amp;gt; control&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; RebasingContainerBuilder : ControlBuilder
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;{
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; AllowWhitespaceLiterals()
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; Type GetChildControlType(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; tagName, System.Collections.IDictionary attribs)
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  {
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #008000"&gt;/* copied this code from System.Web.UI.HtmlControls.HtmlHeadBuilder */&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Equals(tagName, &amp;quot;&lt;span style="color: #8b0000"&gt;link&lt;/span&gt;&amp;quot;, StringComparison.OrdinalIgnoreCase))
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;      &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(HtmlLink);
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Equals(tagName, &amp;quot;&lt;span style="color: #8b0000"&gt;script&lt;/span&gt;&amp;quot;, StringComparison.OrdinalIgnoreCase) 
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;        &amp;amp;&amp;amp; attribs.Contains(&amp;quot;&lt;span style="color: #8b0000"&gt;src&lt;/span&gt;&amp;quot;))
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    {
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;      &lt;span style="color: #008000"&gt;//only rebase script tags that have a src attribute!&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;      &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(HtmlScript);
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  }
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;}&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;If you’ve placed this code inside the same assembly and namespace as the aforementioned HtmlScript class, then register a tag-prefix for that assembly/namespace (as before – the best place is in the web.config so it’s available on all pages) and you can start using it.&lt;/p&gt;

&lt;p&gt;In order for content page script and css references to get rebased you simply change this:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Content&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;indexCustomHead&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ContentPlaceHolderID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;CustomHeadContent&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;link&lt;/span&gt; &lt;span style="color: #ff0000"&gt;href&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;/Content/TestSite.css&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;rel&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;script&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;/Content/script.js&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;language&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;To this:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #e1f8ff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Content&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;indexCustomHead&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ContentPlaceHolderID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;CustomHeadContent&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp2&lt;/span&gt;:&lt;span style="color: #ff0000"&gt;RebasingContainer&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;link&lt;/span&gt; &lt;span style="color: #ff0000"&gt;href&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;/Content/TestSite.css&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;rel&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;script&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;/Content/script.js&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;language&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp2&lt;/span&gt;:RebasingContainer&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ecfeff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 11px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Note that the asp2: prefix here depends on what prefix you actually register with Asp.Net.&amp;#160; At run-time and design time, the RebasingContainer control doesn’t render it’s own tags – it simply acts as a placeholder to instruct Asp.Net to delegate to RebasingContainerBuilder which, in turn, contains the logic to map &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; and &lt;strong&gt;&amp;lt;script&amp;gt; &lt;/strong&gt;tags to the server side controls that will perform the magic rebasing – just like the HtmlHead control.&lt;/p&gt;

&lt;p&gt;Similarly, you can use the rebasing container to rebase &lt;strong&gt;&amp;lt;script&amp;gt;&lt;/strong&gt; tags in the master page’s &lt;strong&gt;&amp;lt;head&amp;gt;&lt;/strong&gt; content (or indeed any page’s head content) – simply move all your existing script tags into a new RebasingContainer, and it will work (don’t worry about the &amp;lt;link&amp;gt; tags – since the HtmlHeadBuilder will take care of those for you).&lt;/p&gt;

&lt;p&gt;When you first do this, the designer might get upset and tell you that it doesn’t recognise the RebasingContainer – simply do a full build, and it will update.&amp;#160; Now flip to design view on one of your content pages that previously didn’t work and smile at the fact that any extra stylesheets are now working in design view!&amp;#160; Notice also that inline javascript will pick up intellisense from any script references that have had to be rebased in order to be picked up.&lt;/p&gt;

&lt;h2&gt;A better, but near-impossible, solution&lt;/h2&gt;

&lt;p&gt;One solution that has been suggested by the community is to sub-class HtmlHead and it’s HtmlHeadBuilder in order to force &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; tags to be always mapped to HtmlLink controls.&amp;#160; There are numerous problems with this, the first and most crucial is that HtmlHead is a sealed class, so that’s impossible.&amp;#160; Even it were possible, however, it wouldn’t really help because, as explained earlier, the HtmlHeadBuilder is only used to parse the direct content of a runat=”server” &lt;strong&gt;&amp;lt;head&amp;gt; &lt;/strong&gt;control, and would never actually get a chance to process the ASPX markup for a page’s Content control.&lt;/p&gt;

&lt;p&gt;Another solution that we researched was to do a similar thing, but for the Content control; that is, sub-class the Content control and it’s associated control builder class, making it &lt;strong&gt;&amp;lt;link&amp;gt;&lt;/strong&gt; and &lt;strong&gt;&amp;lt;script&amp;gt;&lt;/strong&gt; aware.&amp;#160; This would have meant simply changing the control tag used on a content page to inject content in the page’s header.&amp;#160; The big problem with this, however, is that the Content control uses an control builder that’s internal to Asp.Net: ContentBuilderInternal, which by definition cannot be subclassed.&amp;#160; It’s possible to call into internal classes and methods (using dynamic code generation – e.g. via Linq Expression Trees or DynamicMethod), but we didn’t have the time to build a proxy and all the code generation logic.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;In the meantime, we hope that this explains the problem and provides you with an easy-to-use solution!&lt;/p&gt;</content></entry><entry><id>33779f6c-10bc-4d9e-8cfb-319e1a04174f</id><title type="text">VS2010 Beta 2 – Fatal Error Occurred installing Help</title><updated>2009-11-13T17:14:35Z</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/VS2010-Beta-2--Fatal-Error-Occurred-installing-Help"/><category term="Technical"/><content type="html">&lt;p&gt;&lt;font color="#008000"&gt;&lt;strong&gt;Update (10th Feb 2010)&lt;/strong&gt; – a more thorough investigation of this issue has been carried out by us (after being asked to help Microsoft fix the problem) and&lt;/font&gt; &lt;a href="http://www.labs.jobserve.com/Articles.aspx/We-help-Microsoft-fix-Visual-2010-Help-Manager"&gt;a new fix is detailed here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We’ve been playing around with the &lt;a title="Visual 2010 Beta 2 - get it now - free download from Microsoft" href="http://www.microsoft.com/visualstudio/en-gb/products/2010/default.mspx" target="_blank"&gt;beta 2 of Visual Studio 2010&lt;/a&gt; and really like the Web Install idea - although the actual VS2010 part of the download appears to be throttled at around 4Kb, which is a little frustrating!&lt;/p&gt;  &lt;p&gt;At the very end of the installation you get to install the new MSDN Help 3 Collections, choosing online or local help as your primary source.&amp;#160; If you’re running behind a web proxy that requires authentication you will see a “fatal error occurred” message pop up, and that’s it – there’s nothing you can do to get help on to your machine (except to get your SysAdmin to allow you out of the building without going through the proxy).&lt;/p&gt;  &lt;p&gt;However, we have found a rather cheeky solution to this problem – &lt;a href="http://www.fiddler2.com" target="_blank"&gt;the rather marvellous Fiddler Http Web Debugging Proxy&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;To get it to work&lt;/h2&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Scenario 1:&lt;/em&gt;&lt;/strong&gt; All you should have to do is download Fiddler, install it and run it, then hit the ‘Get Content Online’ link again.&amp;#160; Eventually you’ll see all the content offerings, select the ones that you want and then hit the Update button.&lt;/p&gt;  &lt;p&gt;You should see web requests in Fiddler going through to packages.mtps.microsoft.com once the transfer starts.&amp;#160; Don’t worry if they appear to take for ages to complete – you’re watching a multi-part download, and nothing really interesting is going to happen until it’s finished!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Scenario 2:&lt;/em&gt;&lt;/strong&gt; If this doesn’t work – then it’s possible you might have to force Fiddler to remember your credentials for your proxy.&amp;#160; The best way to do this is to load a page in IE, and you should see a proxy login box appear.&amp;#160; Enter the correct credentials for your proxy and check that the web page then loads correctly.&lt;/p&gt;  &lt;p&gt;Now try to get the help content again – it should work.&lt;/p&gt;  &lt;h2&gt;Why does Fiddler make it work?&lt;/h2&gt;  &lt;p&gt;Here’s our theory: Obviously the Help installer client is not proxy-aware.&amp;#160; So it attempts to make a connection to the package download location, but hits the system proxy.&amp;#160; When this happens, the proxy returns a request for credentials, but the code isn’t written to send them over, and so it simply crashes.&lt;/p&gt;  &lt;p&gt;The reason why fiddler makes it work is because if it receives a Proxy Authentication request (Http Status Code 407) from the upstream proxy, it responds with the identity of the user running Fiddler (Scenario 1), or a token that has previously been known to work for the current session (Scenario 2).&amp;#160; &lt;/p&gt;  &lt;p&gt;If that isn’t good enough, it then pushes the 407 back to the client.&amp;#160; Now we already know that the Help Installer itself can’t cope with this, so in our Scenario 2 we use Internet Explorer to cheat, since it displays a login box when credentials are required.&lt;/p&gt;  &lt;p&gt;IE then sends those credentials to Fiddler, which in turn are then sent to your proxy – if the proxy then lets the request out, Fiddler will cache that authentication token to be used with &lt;strong&gt;&lt;em&gt;ALL&lt;/em&gt;&lt;/strong&gt; future requests (not just those coming from IE).&amp;#160; So when the Help Installer then makes another request, it signs that request as authenticated even though the Help Installer didn’t know it needed to.&lt;/p&gt;</content></entry><entry><id>94458b97-3268-4ab0-9822-650eb2c5ae81</id><title type="text">Remote debugging code on Windows 2003 from Vista or Windows 7/2008 R2</title><updated>2009-11-05T12:30:10Z</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Remote-debugging-code-on-Windows-2003-from-Vista-or-Windows-72008-R2"/><category term="Technical"/><content type="html">&lt;p&gt;We’re in the process of upgrading our development environment from Windows Server 2003 x64 to Windows Server 2008 R2.&amp;#160; Apart from the desktop experience being far superior, we’re also moving our web servers up to IIS 7.5, therefore we want all our web developers to be running the same.&amp;#160; Windows 7 is of course an option for this (and it works extremely well as a web development environment – unlike Windows XP Pro), however it doesn’t offer Hyper-V, which is a must for many developers who want to run their own database servers and mock web servers.&lt;/p&gt;  &lt;p&gt;Inevitably, however, we still have to support our existing codebase - all of which runs on Windows Server 2003.&amp;#160; Occasionally, therefore, we need to debug something that’s running live because a problem arises that is not easy to reproduce in a model office environment.&amp;#160; This typically means installing the Visual Studio Remote Debugger on the server that’s running the code and then attaching to it from the local Visual Studio.&amp;#160; Many people would say that this is bad practise; in our opinion bad practise is to go the whole hog and install Visual Studio on the server machine!&amp;#160; Remote debugging, on the other hand, is a reality of working as a developer in a technology-driven business.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;The problem&lt;/h2&gt;  &lt;p&gt;Today we had to do just this, but when we tried to connect to the remote machine we got the error message &amp;quot;a security package specific error occurred&amp;quot;.&amp;#160; If you &lt;a title="Google search for the remote debugger error" href="http://www.google.co.uk/search?hl=en&amp;amp;q=&amp;quot;a+security+package+specific+error+occurred&amp;quot;+remote+debugger&amp;amp;meta=" target="_blank"&gt;do a web search&lt;/a&gt; for this error, you’re likely to see &lt;a title="MSDN Forum link to &amp;quot;Remote Debugger Security Package Specific Error&amp;quot; question" href="http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/54f62bca-0d4b-4a64-82e2-ab6d60f859c9" target="_blank"&gt;this link from MSDN forums, where the user eventually solved the issue by creating a local user on both the target and local machines, and ran both VS2008 and the Remote Debugger as that account&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The solution presented is to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create two, administrator-level, identical local users on both the debugger machine and the debuggee machine &lt;/li&gt;    &lt;li&gt;Run the msvsmon.exe application (the Remote Debugger binary) as that local user on the debuggee &lt;/li&gt;    &lt;li&gt;Startup Visual Studio on the debugger machine as that local user &lt;/li&gt;    &lt;li&gt;Attach to the debuggee &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We weren’t happy with this resolution, because it points to a more fundamental problem – if Remote debugging works between two Windows 2008 R2 or Windows 7 machines, using the same VS binaries, why wouldn’t it work when talking to a Windows Server 2003 machine?&amp;#160; Equally, we don’t want to have to go around creating local users on developer machines and servers just to get remote debugging to work.&amp;#160; When you’ve reached this stage, it typically means that you’ve got an error you can’t reproduce any other way and you just need to ‘get it fixed quick’.&amp;#160; Also, in a TFS environment, the Visual Studio instance in which you’re doing the debugging will not be able to connect to TFS, because the local user that you’re using is unlikely to have access to source control etc.&lt;/p&gt;  &lt;p&gt;The root cause of this problem turns out to be slightly more subtle than the user on the aforementioned MSDN forum post assumed.&amp;#160; It is indeed authentication that is failing, but not the authentication of the user doing the debugging against the server they wish to debug.&amp;#160; In fact, after the remote debugging service receives a request to attach, &lt;a title="MSDN article describing a remote debugging error that sheds light on the authentication process" href="http://msdn.microsoft.com/en-us/library/ms164725.aspx" target="_blank"&gt;it then authenticates back to the machine that the request originates from&lt;/a&gt;&lt;em&gt;&lt;/em&gt;, and it is at this point that authentication is going wrong (we were able to generate the error that is described in that previous link by using a local account for the debugger service on the target machine but without creating it on the development machine).&lt;/p&gt;  &lt;p&gt;Even though our service was running as a domain account which has logon rights to the development machine, for some reason the NTLM network logon token for that account that is sent back by the debugging service would appear not to work properly.&lt;/p&gt;  &lt;p&gt;By enabling network level NTLM auditing (in Local Security Policy, enable the two settings “Network security: Restrict NTLM: Audit Incoming NTLM traffic” and “Network security: Restrict NTLM: Audit NTLM Authentication in this domain”) we were able to see the logon occur, but then the logon session is destroyed (presumably as a result of the “Security package specific error” that occurs).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;A (slightly) easier solution&lt;/h2&gt;  &lt;p&gt;The good news from this is that we can offer a streamlined solution to the one provided in the above MSDN link, the bad news is that you’ll still need to create the local users:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create the two users as before on the two machines – however, &lt;strong&gt;it only needs to be an administrator on the target machine&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Modify the remote debugger service on the target machine to use the new local user, start the service. &lt;/li&gt;    &lt;li&gt;Run Visual Studio 2008 &lt;strong&gt;&lt;u&gt;as you would normally&lt;/u&gt;&lt;/strong&gt; (no need to run as the local user), and attach the debugger as normal. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Tell Microsoft!&lt;/h2&gt;  &lt;p&gt;&lt;a title="&amp;quot;A security package specific error occured&amp;quot; Visual Studio bug on Microsoft Connect" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=508455" target="_blank"&gt;We have logged a bug on Microsoft Connect&lt;/a&gt; so that the VS team can investigate the issue – if you are affected by this issue then please vote for it!&amp;#160; At present we do not know if this also affects Visual Studio 2010 (we have a development lab set up and will investigate), if you can verify that it does, then add your experience to that bug so that we can ensure that at least the next version of VS isn’t plagued by this issue, even if it doesn’t get fixed in the current version.&lt;/p&gt;</content></entry><entry><id>e2a3dc86-76d5-4db1-8e74-595caba3f82d</id><title type="text">Important update to iPhone Job Search</title><updated>2009-10-28T22:37:47Z</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Important-update-to-iPhone-Job-Search"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;A few of you had noticed that when entering a location in the iPhone App (i.e. not &lt;a href="http://www.labs.jobserve.com/Articles.aspx/Job-Search-iPhone-App-Update" target="_blank"&gt;using the Jobs Near Me option&lt;/a&gt;) the numbers of results did not match similar searches on the website. Also it appeared that changing the proximity distance for these searches had no affect – in fact all searches were running “zero miles”.&lt;/p&gt;  &lt;p&gt;Yesterday we made a change to our core web services supplying Job Search to the iPhone and we can confirm that now the proximity distance is having the desired affect.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We would like to thank those candidates alerting us to the issue – please &lt;a href="mailto:labs.feedback@apps.jobserve.com" target="_blank"&gt;continue to feedback&lt;/a&gt; to us as you can help to make this app and others in JobServe Labs more effective.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The JobServe Labs Team&lt;/p&gt;</content></entry><entry><id>3be28036-c94a-4e2d-a72a-4bea4119ac03</id><title type="text">Job Search iPhone App Update</title><updated>2009-10-27T09:47:37Z</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/Job-Search-iPhone-App-Update"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;The JobServe Job Search iPhone App (&lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=335516223&amp;amp;mt=8&amp;amp;s=143441" target="_blank"&gt;available here&lt;/a&gt;) has been on the App Store for just under a week and we are very pleased with the overall reception so far. In this article we would like to discuss the feedback so far and explain some of the issues experienced.&lt;/p&gt;  &lt;p&gt;Thank you to all the users that have taken the time to email us with constructive and useful feedback, we have had over 3,000 downloads and at least 50 emails which range from feature requests and suggestions to possible issues with the search or function of the app.&lt;/p&gt;  &lt;p&gt;Key features requested:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Provide Salary/Rate search options &lt;/li&gt;    &lt;li&gt;Allow user to set the number of results displayed per page &lt;/li&gt;    &lt;li&gt;Access Saved Searches from the JobServe website &lt;/li&gt;    &lt;li&gt;Apply for Jobs directly from the App &lt;/li&gt;    &lt;li&gt;Display the Job Reference and recruiter Telephone number if available &lt;/li&gt;    &lt;li&gt;Allow results to be displayed in Best Match or Posted Date Descending order &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;   &lt;br /&gt;Suggested improvements to current functionality:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Change the layout of the results to fit more jobs on the screen – better use of real estate &lt;/li&gt;    &lt;li&gt;Make the settings option more visible to users &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;   &lt;br /&gt;Issues highlighted:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Jobs Near Me functionality causes app crashes for some users &lt;/li&gt;    &lt;li&gt;Email job from Full Description screen fails &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So we have a good set of request and suggestions already. Currently under review by Apple is a new version v1.01 which will provide new features 2 and 5 above. Cosmetic changes to the layout will display more jobs per page and the settings option is more visible.&lt;/p&gt;  &lt;p&gt;In terms of bugs all should be fixed in this new release.&lt;/p&gt;  &lt;p&gt;Jobs Near Me – This uses the iPhone API &lt;a href="http://developer.apple.com/iphone/library/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html" target="_blank"&gt;CLLocationManager&lt;/a&gt; class and for many users when selected this class returns the location co-ordinates quickly and accurately. However some users experience when in certain locations that this crashes – we have many reports of the same user using the app successfully in different locations but crashing in other locations. Under all testing scenarios we did not experience this, and although not a perfect excuse, we released this with belief that the required precautions were taken. On closer analysis it appears that the CLLocationManager may be returning two results very quickly – even though we have requested specifically to &lt;a href="http://www.iphonedevsdk.com/forum/iphone-sdk-development/2299-cllocationmanager-stopupdatinglocation-not-working.html" target="_blank"&gt;stop updating the location&lt;/a&gt;. Users experiencing the crashing sometimes saw results very quickly or just bombed out on the first screen. Users could then use the Location box for searching instead as a workaround. &lt;/p&gt;  &lt;p&gt;The new release will be out as soon as possible and we value your continued feedback. &lt;/p&gt;  &lt;p&gt;Following this release we will be planning another release which will contain Sort Order options and Salary Searching. &lt;/p&gt;  &lt;p&gt;We are also working on the Application platform which will allow users to apply for jobs directly from their phone using our Job Application process similar to the JobServe website. The only requirement will be to have a JobServe candidate record and maintain a CV on the website.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="10" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://www.labs.jobserve.com/files.aspx/S14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="S1" border="0" alt="S1" src="http://www.labs.jobserve.com/files.aspx/S1thumb1.png" width="284" height="406" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://www.labs.jobserve.com/files.aspx/S24.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="S2" border="0" alt="S2" src="http://www.labs.jobserve.com/files.aspx/S2thumb1.png" width="284" height="407" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;</content></entry><entry><id>cc44b58f-474e-4145-a7a6-333aba6ce045</id><title type="text">JobServe Connect – Job Search for the iPhone released</title><updated>2009-10-21T15:21:02+01:00</updated><author><name>JobServe</name><uri>http://www.labs.jobserve.com</uri></author><link rel="alternate" href="http://www.labs.jobserve.com/Articles.aspx/JobServe-Connect--Job-Search-for-the-iPhone-released"/><category term="Connect: iPhone Job Search"/><content type="html">&lt;p&gt;We are happy to report that the JobServe iPhone app “JobServe Connect – Job Search” has now been approved by Apple and is available from the App Store on iTunes. We thank all the users that pre-registered for the app and you should all have received your launch link to download the App.&lt;/p&gt;  &lt;p&gt;So far response has been very good and we encourage even more of you to send us emails with suggestions and general feedback, we’ll post details of what features will be making the next release as soon as we can.&lt;/p&gt;  &lt;p&gt;If you would like to get the iPhone app now please use this link &lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=335516223&amp;amp;mt=8&amp;amp;s=143441" target="_blank"&gt;to download from iTunes&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
