Unable to find file RSSharePointSoapProxy error in SQL Reporting Services SharePoint mode


After installing SQL Reporting Services on our Web front end servers, our Sharepoint site crashed and burned with the following error in the event log

Unhandled exception was caught:
System.Configuration.ConfigurationErrorsException: Could not load file or
assembly ‘RSSharePointSoapProxy, Version=9.0.242.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91’ or one of its dependencies. The system
cannot find the file specified. (c:\inetpub\wwwroot\web.config line 68) —>
System.IO.FileNotFoundException: Could not load file or assembly
‘RSSharePointSoapProxy, Version=9.0.242.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91’ or one of its dependencies. The system
cannot find the file specified.
File name: ‘RSSharePointSoapProxy, Version=9.0.242.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91’

We had just installed the SharePoint Reporting Services add-in , so were sure that the necessary assemblies were on the server, since there were no errors during the installation. However we noticed that the installation was done with a non-admin account.

Resolution:

Running the installation using the same service account as the SharePoint application pool resolved the issue

SQL Reporting Services and SharePoint Integrated Mode 401 errors


After setting up SQL Reporting Services in SharePoint Integrated mode, trying to access the Report Server site using http://<remoteserver>:8080/ReportServer gave 401 errors. One weird thing that we noticed was when trying to set authentication to NTLM on our IIS web site, our values were getting reset to Anonymous access. A quick Google search brought up this post, which had the fix for the issue

Resolution:

Run the following from a command prompt within the C:\inetpub\AdminScripts folder

cscript adsutil.vbs set w3svc/NTAuthenticationProviders “NTLM”

Here is the link to the post

http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1379070&SiteID=17

 

 

 

SQL Reporting Services Install issue in SharePoint Integrated mode


When trying to set the Web Service Identity within the Reporting Services Configuration Manager in a SharePoint integrated mode , we encountered the following issue

ReportServicesConfigUI.WMIProvider.WMIProviderException: An unknown error has occurred in the WMI Provider. Error Code 80070003
   at ReportServicesConfigUI.WMIProvider.RSReportServerAdmin.SetWebServiceIdentity(String applicationPool)

At first we thought the WMI provider was corrupted and tried to go that route for resolving this issue. After quite some time we figured that it may have been something with the applicationPool and hence started looking at the Web site configuration within IIS. Sure enough, in the ASP.NET tab for the web site, there was no entry for the ASP.NET version. After setting the value to 2.0 , we re-ran the configuration and the issue was fixed.

Resolution:

Check to make sure the right ASP.NET version is selected on your Reporting services website.  While you are there ensure that the ASP.NET web service extension is set to Allowed.  If these dont fix your issue running the aspnet_regiis -i might help as well ( I havent tried this!)

SharePoint Incoming emails not picked up


Incoming emails not picked up in MOSS 2007

 When trying to setup email enabled document libraries, we setup the front end server with the SMTP service. On sending emails we saw the emails getting deposited into the C:\Inetpub\MailRoot\Drop folder. However the emails were not getting picked up and routed to the service. We tried to restart the Timer Service, gave folder permissions and nothing seemed to work. Upon checking the event logs we found the following entries

A critical error occurred while processing the incoming e-mail drop folder.
The error was: Value cannot be null. Parameter name: path.

Source: Windows SharePoint Services 3
Category: EMAIL
Event ID: 6872;

2)
“The Execute method of job definition
Microsoft.SharePoint.Administration.SPIncomingEmailJobDefinition (ID
d7c219ba-839d-4580-adc2-fa512a8cb833) threw an exception. More information is
included below.
Value cannot be null.
Parameter name: path”

Source: Windows SharePoint Services 3
Category: TIMER
Event ID: 6398″

This looked like the incoming email drop folder was not setup properly in the Central Admin Console. We checked and sure enough the drop folder was empty. Setting that value fixed this error. To set the drop folder

Central Admin-> Incoming email settings

Click Advanced and type in the email drop folder.


 Here is a great whitepaper on how to setup incoming emails (Whitepaper)

Allowunsafeupdates and Sharepoint – A technical overview


Pavlov’s got a great post on AllowUnsafeUpdates and Cross-site scripting.  A must read for all SharePoint developers.

http://hristopavlov.wordpress.com/2008/05/16/what-you-need-to-know-about-allowunsafeupdates/

 

Sharepoint Deployment Planning Services


If you are a Microsoft partner, great news is here. Microsoft is planning to pay for a 10 day engagement in SharePoint deployment called SDPS. Partners with Information Worker competencies can qualify.  More details here

http://blogs.msdn.com/sharepoint/archive/2008/05/19/announcing-sharepoint-deployment-planning-services-sdps.aspx

My firm is planning to get qualified too.  Apparently we need individuals who have passed 70-630 and 70-631.  

Planning a SharePoint solution


Ishai has a great post here on how to plan a Sharepoint solution.  Great Post for all developers/architects

http://www.sharepoint-tips.com/2008/06/things-to-think-about-when-planning.html

 

Close InfoPath Forms Services form using Code


I was working on a way to close an InfoPath form using C# or VB.NET from the form code-behind after the user submits the form. The steps below help in running some custom code to save the data and then close the form.

Here are the steps to close the Form

  • Set the Submit Action[Tools->Submit Options] within InfoPath for the form to “Perform custom action using Code” . Click the Edit Code option to submit the form using code
  • Set the After Submit option under Advanced to “Close the Form”

 

Click the Edit Code button next to the perform custom action to submit the data. Editing the code adds an handler for the Form Submit event and a FormEvents_Submit method is created in the code behind. Once the code completes the submission, set the CancelableArgs.Cancel property of the SubmitEventArgs to false.

Here is a sample FormEvents Submit method

In the SubmitConnection method, I retrieve the required data connection and call the execute method for submission

Dim fileSubmit as FileSubmitConnection = CType(Me.Connections(“SharePoint Save”),Microsoft.Office.InfoPath.FileSubmitConnection)

fileSubmit.Execute()

In the above sample, the data connection that I want to use for Submit is named “SharePoint Save”. I typecast it as a FileSubmitConnection.

I found this solution on one of the forum posts

http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2605818&SiteID=17

MOSS 2007 Employee Directory web part using Search and Data View web parts


SharePoint Employee Directory web part

One of the frequent requests from my customers in a MOSS 2007 implementation is an employee directory webpart. During the pre-sales cycle they are excited to see the Active Directory integration and the first question they ask is ” Can this replace our existing employee directory out of the box ?”. Unfortunately there are no out of the box web parts at this time to display an employee directory from the user profiles.

Bamboo Solutions(Link) has a great package that provides some of these webparts. However if you don’t need the robust suite from Bamboo, the same can be built using MOSS 2007 Search and the Data View webpart. Let us get started on building the employee directory webpart in this article.

To build an employee directory web part, you need the following

  • The free SharePoint Search Query Tool – refer to this article for download instructions
  • SharePoint Designer 2007 – Click here to download a free trial
  • Information on how to build Data View Web Parts – there is a great white paper here

First, we need to retrieve the properties from the user profile. Since the user profiles are available under the people scope, we will use the SharePoint search query tool to build our people search query. For this article, we will retrieve the “preferredname”, “firstname”. “lastname”, “workemail”,”picturelurl”. Run the Sharepoint search query tool. Since we will be connecting to a MOSS 2007 instance select the MOSS option and enter your server web service URL ( http://<servername>/_vti_bin/search.asmx)

Now we build a SQL search query to retrieve the properties

“select preferredname,firstname,lastname,workemail,workphone,pictureurl,Title,Description,write,Rank,Size, from scope() where “scope” = ‘People’ order by preferredname ASC”

Notice the double quotes around the scope. I am not sure why this is needed but it doesn’t work without the quotes. Enter the number of search results you will need by setting the “Count” field in the query tool. Once the SQL Query is in place click “Build Request XML” . This will build an XML fragment. Once the XML fragment is built, Click on QueryEx to ensure that you are getting the desired results. Remember to click build request XML everytime you make a change to the query.

The screenshot shows a the final results of this exercise. We will need the XML generated by the Build Request XML action. Copy the XML and paste into Notepad and remove all linebreaks in the XML. Ensure that the entire XML is available on a single line within Notepad. Here is how our XML query looks

<QueryPacket xmlns=”urn:Microsoft.Search.Query”>Query> <SupportedFormats><Format>urn:Microsoft.Search.Response.Document:Document</Format></SupportedFormats> <Context> <QueryText type=”MSSQLFT” language=”en-us”>select preferredname, firstname, lastname, workemail, workphone, Title,Path, pictureurl, description, write, rank, size from scope() where “scope”= ‘People’ and firstname != ” order by preferredname asc</QueryText> </Context> <Range> <StartAt>1</StartAt> <Count>1000</Count> </Range> <EnableStemming>true</EnableStemming> <TrimDuplicates>true</TrimDuplicates> <IgnoreAllNoiseQuery>true</IgnoreAllNoiseQuery> <ImplicitAndBehavior>true</ImplicitAndBehavior> <IncludeRelevanceResults>true</IncludeRelevanceResults> <IncludeSpecialTermResults>true</IncludeSpecialTermResults> <IncludeHighConfidenceResults>true</IncludeHighConfidenceResults> </Query></QueryPacket>

If you need to retrieve additional properties, add them to the SQL query. To refer to the fieldnames for the properties, click on

Central Admin -> Shared Service Provider -> User Profiles and Properties -> View Profile Properties

Click Edit on the property that you need and get the property name. In this case I needed the Profile Picture. The name of the property is PictureURL, which is what we need in the query

Now that we have our XML ready, this is time for us to build the web part. We will be using the Data View webpart available within SharePoint Designer for building the UI

The white paper linked in this article above is a must read for building Data View web parts.

First we will create a web part page to host our web part. Click Site Actions-> Create and select web part page to create a new web part page. Here we have used the Full Page Vertical option and named our page “EmployeeDirectory.aspx”. Now that we have our page ready we build the webpart using SharePoint Designer. Open the site within SharePoint designer and navigate to the web part page

Open the site within SharePoint Designer

Once the site is opened, click on the document library where the web part page was created. In our case it is Shared Documents.

Click on the EmployeeDirectory.aspx file to edit

Now we will connect to the MOSS web service and use the XML query to retrieve the user profiles. In the Data Source Library options in the right toolbar, select XML Web services and connect to a web service. Enter the location of the web service, which will be the same as what we entered in the Query tool and click “Connect”. Change the “Operation” to “QueryEx”. All other options can be left at the defaults.

Now we will use the Data View webpart to display these values. Click on the Web Part zone which says “Insert a Web Part” and insert a Data View Web Part by selecting Data View from the menu bar and “insert data view”. Your screen should look like this

The queryXML needs to be modified and our XML fragment from Part-1 needs to be used here. Click on queryXml and click modify and enter the search query from the notepad file. If your query has any line breaks, then your XML will not be copied over correctly. Ensure that your XML ends with a </QueryPacket>. If it does not, then you have some line breaks in your XML fragment. You can now switch to the General tab and set an appropriate name for this connection and set the authentication to Windows in the Login tab.

Click on the connection drop down and click Show Data to view the results of the search query during design time

We can see the fields returned from the web service as well as the data in those fields. There are 115 records returned in this case. Now you can drag and drop these fields on to the data view web part to create your employee directory. The DataView white paper provides information about the different options for formatting and working with the web part. In the code view in SharePoint Designer, search for <XSL>. The entire stylesheet for displaying your data is available within the <XSL></XSL> tags. You can develop the stylesheet externally and include it within these tags. Just ensure that the propertynames in the XSLT tags shown below match the query from the web service.

<xsl:variable name=”fullname” select=”Title” /> <xsl:variable name=”url” select=”Path”/> <xsl:variable name=”email” select=”WorkEmail”/> <xsl:variable name=”pictureurl” select=”PictureURL”/>. In the example above select=”Title” will need to be modified as select=”TITLE” and so on for the other properties.

Our web part is now ready. Save the changes and preview your page.

Here is a great article on how to include the presence information. The presence information is embedded into the XSLT by adding an image with a call to the IMNRC function onload.

<img
border=0
valign=middle
height=12
width=12


src=/_layouts/images/imnhdr.gif
onload=IMNRC(‘{$email}’)


id={generate-id()}
ShowOfflinePawn= 1 />

Click here for the web part. Search for SelectUrl and WsdlPath attributes and replace the links to match your environment

Click here if you just need the XSL.

Any changes to the profile, will be available upon the next indexer crawl, which is set up in the central admin console.

Update:

See Gavin’s post below for resizing the image

Run MOSS 2007 on your laptop with Windows Vista


I saw this article today on a product from Bamboo Solutions that lets the users run MOSS 2007 or WSS on Windows Vista, without requiring Windows Server 2008.  This will truly be a boon for developers.

http://www.cmswire.com/cms/enterprise-cms/running-sharepoint-on-windows-vista-002708.php

 

%d bloggers like this: