<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Just Another Web Application : MOSS</title><link>http://blogs.technet.com/jasbro/archive/tags/MOSS/default.aspx</link><description>Tags: MOSS</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>On the subject of the Central Admin website</title><link>http://blogs.technet.com/jasbro/archive/2008/03/28/doing-unsupported-things-to-sharepoint-all-about-central-admin.aspx</link><pubDate>Fri, 28 Mar 2008 06:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3022403</guid><dc:creator>jasbro</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jasbro/comments/3022403.aspx</comments><wfw:commentRss>http://blogs.technet.com/jasbro/commentrss.aspx?PostID=3022403</wfw:commentRss><description>&lt;P&gt;I've been rooting round in SharePoint internals today, mostly out of curiosity, after&amp;nbsp;a fellow engineer here at the GTSC mentioned changing the port number on which Central Admin is published. We have a supported way, and some unsupported ways, and some ways that are sort of outside the scope of SharePoint entirely. So I figured why not a blog post?&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The officially supported way:&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE style="FONT-FAMILY: monospaced"&gt;psconfig.exe -cmd adminvs -port 5950&lt;/PRE&gt;
&lt;P&gt;Pretty simple, but not commonly known (I had to double-check myself). Reprovisions (or more accurately,&amp;nbsp;&lt;EM&gt;alters the existing provisioned copy of&lt;/EM&gt;) your Central Admin site on the appropriate port. This command can also provision or unprovision Central Admin entirely, and can change the authentication scheme.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The unsupported way:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;open inetmgr.exe&lt;/LI&gt;
&lt;LI&gt;right-click the central admin website&lt;/LI&gt;
&lt;LI&gt;click properties&lt;/LI&gt;
&lt;LI&gt;on the first tab, change the port binding, click OK and go merrily about your business.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;The downside here? Well the shortcut in your start menu will no longer point at the right port, for one thing. You may be able to live with that, but in addition, our config and deployment&amp;nbsp;tools won't be able to talk to central admin if they need to, service packs and updates may break your changes and indeed future updates may flat-out fail.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Internally, the central admin URL is stored in two places, which won't be updated by this method. First,&amp;nbsp;in the registry, at:&lt;/P&gt;
&lt;P mce_keep="true"&gt;HKLM\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\WSS&lt;BR&gt;CentralAdministrationURL&lt;BR&gt;REG_SZ&lt;/P&gt;
&lt;P mce_keep="true"&gt;Secondly, in the config database in the 'objects' table, as part of the big bad voodoo 'properties' field in one or more rows (in my case, two rows). Exploring this deeply is probably beyond the scope of this post, suffice it to say: &lt;STRONG&gt;don't mess with the config DB, and don't change the Central Admin port this way if you can possibly avoid it.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;A supportable alternative:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;This is how my usual virtual machines are set up. I do not change the port on which Cental Admin was originally configured. I do however, add another IIS binding, &lt;EM&gt;but with a host header.&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;First, we need a hostname or host header. Often, you can add a DNS name, for example "admin.sharepoint.com", then we once more crack open inetmgr.exe, get the properties of the central admin site, and hit the advanced button in the IP binding section. You then:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Click Add&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Add a new binding with name and port 80 specified.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Click OK&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;This allows me to contact Central Admin from remote machines without punching holes in the firewall and without actually moving the existing CA site. The downside? If you run the psconfig command mentioned above, it'll wipe your additional bindings. And your menu shortcuts will still point to the original port.&amp;nbsp;The upside? you don't have to remember the port number any more, In fact, I find it so useful that on my VMs I have a HOSTS file entry marked 'admin' pointing to 127.0.0.1 and a host header to match. I can just type 'admin' into the address bar and away we go.&lt;/P&gt;
&lt;P mce_keep="true"&gt;So there are three things you can do to alter the port on which Central Admin is published, one of which puts you way outside supportable territory, and two of which we'll happily support. Go with the good two, guys!&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3022403" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jasbro/archive/tags/sharepoint/default.aspx">sharepoint</category><category domain="http://blogs.technet.com/jasbro/archive/tags/supportability/default.aspx">supportability</category><category domain="http://blogs.technet.com/jasbro/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>EventID 5566 Troubleshooting in InfoPath Form Services</title><link>http://blogs.technet.com/jasbro/archive/2008/02/05/eventid-5566-troubleshooting-in-infopath-form-services.aspx</link><pubDate>Tue, 05 Feb 2008 05:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2828510</guid><dc:creator>jasbro</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/jasbro/comments/2828510.aspx</comments><wfw:commentRss>http://blogs.technet.com/jasbro/commentrss.aspx?PostID=2828510</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;This post has been snatched from the headlines of Premier Support. The names have been changed to protect the innocent. Now read on...&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Imagine for a moment you're creating a new InfoPath form t recieve user input. Imagine furthermore that you're pre-populating this InfoPath form with information from a web service, in this case based on some sterling advice you &lt;A class="" title="InfoPath get current user wth no code" href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2007/04/05/InfoPath-_2D00_-Get-the-current-user-without-writing-code.aspx" mce_href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2007/04/05/InfoPath-_2D00_-Get-the-current-user-without-writing-code.aspx"&gt;found on a Microsoft blog&lt;/A&gt;. Further imagine that this InfoPath form works perfectly in the InfoPath client application itself, so you pat your own back and deploy it to&amp;nbsp;SharePoint site for initial testing and feedback.&lt;/P&gt;
&lt;P&gt;This is a very common scenario, and most people would never run into the problem my customer did, which was this: When SharePoint users who did not have the InfoPath client app installed came to use the form, it tried to open in InfoPath Forms Services, a wonderful feature of SharePoint. This is fine, the form was designed with this in mind and was set up to be a browser-compatible form. But this happened:&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG title="There has been an error processing the form - Infopath" style="WIDTH: 449px; HEIGHT: 297px" height=297 alt="There has been an error processing the form - Infopath" src="http://mycolleaguesareidiots.com/images/mycolleaguesareidiots_com/37/r_ipath_error.jpg" width=449 mce_src="http://mycolleaguesareidiots.com/images/mycolleaguesareidiots_com/37/r_ipath_error.jpg"&gt;&lt;/P&gt;
&lt;P&gt;In addition, an Event with ID of 5566 was logged to the server's event log.&lt;/P&gt;
&lt;P&gt;Interesting.&lt;/P&gt;
&lt;P&gt;So what did we do here? Well, the first thing was to&amp;nbsp;confirm that the form worked OK in the InfoPath client, which was confirmed. I then set about making sure the steps in the original blog article were valid and didn't contain anything weird. This I achieved by followig the steps myself in my repro environment. During this phase I observed exactly what was going on where for this to work correctly. Mine, &lt;EM&gt;of course&lt;/EM&gt;, didn't work correctly right out of the box, and I discovered there are a&amp;nbsp; number of things that could potentially go wrong here.&lt;/P&gt;
&lt;P&gt;Firstly, Internet Explorer Enhanced Security, which is enabled by default on Windows 2003 servers, may stymie your attempts to even get this working in the&amp;nbsp;InfoPath client, as it did to me while developing on Windows 2003 Server. Create your form on a workstation or turn off IEES by removing it from Add/Remove Programs-&amp;gt; Windows Features&lt;/P&gt;
&lt;P&gt;Second: On some Windows 2003 Sp1 installations, you may possibly run afoul of the LSA Local Loopback restriction. This is designed in order to prevent a class of attacks known as 'reflection attacks', but can, on occasion, have the unfortunate consequence of denying access to code which tries to connect back to the same server to, say, run a web service. There is &lt;A class="" title="LSA Local Loopback Check problem" href="http://support.microsoft.com/kb/896861" mce_href="http://support.microsoft.com/kb/896861"&gt;a KB article&lt;/A&gt;&amp;nbsp;on this, which can be used to eliminate this angle from the enquiry.&lt;/P&gt;
&lt;P&gt;OK, so having eliminated those, we found that my local repro worked fine in both Office Client and IPFS, but&amp;nbsp;the original problem at the customer's end was still extant. &lt;/P&gt;
&lt;P&gt;At this point, we went to the logs. Having set this up myself, I had a set of IIS&amp;nbsp;logs which reflected correct behaviour. I obtained the customer's logs for a similar period and managed to track down the requests in question - which was easy enough to do. IPFS uses /_layouts/FormResource.aspx to render forms and in our scenario I'd expect to see a&amp;nbsp;logged line closely&amp;nbsp;following this which would go to UserProfileService.asmx to do the info retrieval so that IPFS could pre-populate the form.&lt;/P&gt;
&lt;P&gt;What we saw there was of interest.&lt;/P&gt;
&lt;P&gt;Expected behaviour for a secured web service such as this one would be one (or two) HTTP 401 responses, then an HTTP&amp;nbsp;200 response signifying sucess. We saw three 401 responses in a row, and no 200. So IPFS &lt;EM&gt;was&lt;/EM&gt; calling the Web Service, but being denied access.&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;2008-02-01 02:10:33 W3SVC533812677 10.254.72.102 POST /_vti_bin/UserProfileService.asmx - 80 - 10.254.76.37 InfoPathDA 401 2 2148074254&lt;BR&gt;2008-02-01 02:10:33 W3SVC533812677 10.254.72.102 POST /_vti_bin/UserProfileService.asmx - 80 - 10.254.76.37 InfoPathDA 401 1 0&lt;BR&gt;2008-02-01 02:10:33 W3SVC533812677 10.254.72.102 POST /_vti_bin/UserProfileService.asmx - 80 - 10.254.76.37 InfoPathDA 401 1 2148074248&lt;BR&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;More interestingly, from our point of view, the c-ip or Client IP&amp;nbsp;field did not show the IP address of this server. In my good repro, the request came from 127.0.0.1, the local loopback address. The customer's log showed that the request to the web service was coming from a proxy server.&lt;/P&gt;
&lt;P&gt;Light bulbs flashed on in our heads - the call out to the proxy shouldn't have been happening. To solve this, we need to stop IPFS using the proxy. INA quick consultation with the customer revealed that, why yes, we are using a proxy - some custom web parts need to call out to the internet and grab data, so there's a proxy configured in web.config for the MOSS site. Like this:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp; &amp;lt;system.net&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultProxy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;proxy usesystemdefault="false" proxyaddress="&lt;A href="http://xx.xx.xx.xx:8080/"&gt;http://xx.xx.xx.xx:8080/&lt;/A&gt;" bypassonlocal="true" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/defaultProxy&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/system.net&amp;gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;As you can see, bypass on local is enabled. So why wasn't IPFS bypassing the proxy? The answer lay in the URL used to access MOSS, which in this case was&amp;nbsp;the dot-separated local address moss.company.local. WinHTTP sees this as an FQDN, and doesn't qualify it as local, and WinHTTP does our web service request. The finishing line was in sight. All that remained was to check this MSDN article on &lt;A class="" title="Proxy Bypass in web.config" href="http://msdn2.microsoft.com/en-us/library/aa903323(VS.71).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa903323(VS.71).aspx"&gt;enabling bypass lists in web.config or machine.config&lt;/A&gt;, and our troubles were over.&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp; &amp;lt;system.net&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;defaultProxy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;proxy usesystemdefault="false" proxyaddress="&lt;A href="http://xx.xx.xx.xx:8080/"&gt;http://xx.xx.xx.xx:8080/&lt;/A&gt;" bypassonlocal="true" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bypasslist&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add address="moss.company.local" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bypasslist&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/defaultProxy&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/system.net&amp;gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;IPFS now works like a charm at the customer's site and serenity has returned to the IT department, just the way we like it.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Incidentally, the &amp;lt;bypasslist&amp;gt; element allows you to use Regular Expression to specify addresses, so you can exclude whole ranges at will - quite neat.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2828510" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jasbro/archive/tags/troubleshooting/default.aspx">troubleshooting</category><category domain="http://blogs.technet.com/jasbro/archive/tags/sharepoint/default.aspx">sharepoint</category><category domain="http://blogs.technet.com/jasbro/archive/tags/infopath/default.aspx">infopath</category><category domain="http://blogs.technet.com/jasbro/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/jasbro/archive/tags/Proxy/default.aspx">Proxy</category><category domain="http://blogs.technet.com/jasbro/archive/tags/IPFS/default.aspx">IPFS</category></item></channel></rss>