FAST Search Center – Unable to display this Web Part- Results page webpart error in SharePoint 2010

I have spent a lot of time troubleshooting this one and its certainly made me very familiar with FAST Search for SharePoint 2010 :)

When configuring FAST Server for SharePoint 2010, you receive this error:

“Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Microsoft SharePoint Foundation-compatible HTML editor such as Microsoft SharePoint Designer. If the problem persists, contact your Web server administrator”

Want to save some time?
Solution:
Configure HTTPS for your query service. At this time, there are issues with getting HTTP to work in FAST.
Ie: https://FQDN:13286 for your query service

Click ‘More’ to get further educated..


Some further background information:
There is a bug in the Install_Info.txt when you install FAST stating that the query service runs on port 13285 but its actually 13287
Even after knowing that handy piece of information, I used 13287 for the query service, when running the scripts to generate the certificate and uncommenting/ editing the bin\QRProxyService.exe.config file.

Anyway, here are the steps to configure it with HTTPS:
Open FAST Search for SharePoint 2010 Shell as Administrator

Run the following after changing the values in BOLD:
Add-PSSnapin Microsoft.SharePoint.Powershell
$currentdir = pwd
$sharepointSTSCertFilename = Join-Path -Path $currentdir -ChildPath ‘MOSS_STS.cer’
$fastsearchqrserver = ‘YOUR FAST SERVER FQDN’
$fastSSAName = ‘YOUR FAST Search Query SSA name’
$sharepointServicesCertFilename = Join-Path -Path $currentdir -ChildPath ‘MOSS_SERVICES.pfx’
$sharepointServicesCertPassphrase = $host.ui.PromptForCredential(“Need Credentials”, “Please enter a passphrase for the SharePoint Services Cert”, “CERT_PASSPHRASE”, “”)
$tempStringValue = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sharepointServicesCertPassphrase.Password)
$plainTextPassPhrase = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($tempStringValue)
$stsCert = (Get-SPSecurityTokenService).LocalLoginProvider.SigningCertificate
$stsCert.Export(“cert”) | Set-Content -encoding byte $sharepointSTSCertFilename
$sharePointCertStore = new-object System.Security.Cryptography.X509Certificates.X509Store(‘SharePoint’, [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine)
$sharePointCertStore.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadOnly)
$servicesCert = $sharePointCertStore.Certificates.Find([System.Security.Cryptography.X509Certificates.X509FindType]::FindBySubjectName,’SharePoint Services’, $false)
$servicesCert.Export(“pfx”, $plainTextPassPhrase) | Set-Content -encoding byte $sharepointServicesCertFilename
$servicesCert2 = new-object System.Security.Cryptography.X509Certificates.X509Certificate2
$servicesCert2.Import($sharepointServicesCertFilename, $plainTextPassPhrase, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
$trustedPeopleCertStore = new-object System.Security.Cryptography.X509Certificates.X509Store(‘TrustedPeople’, [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine)
$trustedPeopleCertStore.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$trustedPeopleCertStore.Add($servicesCert2)
$trustedPeopleCertStore.Close()

$queryServiceLocationValue = “https://” + $fastsearchqrserver + “:13286”
Set-SPEnterpriseSearchExtendedQueryProperty -SearchApplication $fastSSAName -Identity “FASTSearchQueryServiceLocation” -Value $queryServiceLocationValue
Set-SPEnterpriseSearchExtendedQueryProperty -SearchApplication $fastSSAName -Identity “FASTSearchQueryServiceWinAuth” -Value false
Get-SPEnterpriseSearchExtendedQueryProperty -SearchApplication $fastSSAName
IISReset

Now copy the .cer and .pfx file to a location of your choice and update the following script with the location. It should contain the full location and include the file name eg. D:\FASTSearch\HTTPS\MOSS_STS.cer and D:\FASTSearch\HTTPS\MOSS_SERVICES.pfx

$sharepointSTSCertFilename = ‘D:\FASTSearch\HTTPS\MOSS_STS.cer
$sharepointServicesCertFilename = ‘D:\FASTSearch\HTTPS\MOSS_SERVICES.pfx
$sharepointServicesCertPassphrase = $host.ui.PromptForCredential(“Need Credentials”, “Please enter the passphrase for the SharePoint Services Cert”, “CERT_PASSPHRASE”, “”)
$tempStringValue = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sharepointServicesCertPassphrase.Password)
$plainTextPassPhrase = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($tempStringValue)

# Import SharePoint Security Token Service Certificate
Add-PSSnapin Microsoft.FASTSearch.Powershell
$trustedPeopleCertStore = new-object System.Security.Cryptography.X509Certificates.X509Store(‘TrustedPeople’, [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine)
$trustedPeopleCertStore.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$sharepointSTSCert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2
$sharepointSTSCert.Import($sharepointSTSCertFilename)
$trustedPeopleCertStore.Add($sharepointSTSCert)

# Import SharePoint Security Token Service Certificate
$trustedPeopleCertStore = new-object System.Security.Cryptography.X509Certificates.X509Store(‘TrustedPeople’, [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine)
$trustedPeopleCertStore.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$sharepointSTSCert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2
$sharepointSTSCert.Import($sharepointSTSCertFilename)
$trustedPeopleCertStore.Add($sharepointSTSCert)
$trustedPeopleCertStore.Close()

# Import SharePoint Services Certificate
$sharepointServicesCert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2
$sharepointServicesCert.Import($sharepointServicesCertFilename, $plainTextPassPhrase, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
$personalCertStore = new-object System.Security.Cryptography.X509Certificates.X509Store(‘My’, [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine)
$personalCertStore.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$personalCertStore.Add($sharepointServicesCert)
$personalCertStore.Close()
$rootCertStore = new-object System.Security.Cryptography.X509Certificates.X509Store(‘Root’, [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine)
$rootCertStore.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$rootCertStore.Add($sharepointServicesCert)
$rootCertStore.Close()

# Configure FAST Search to trust SharePoint Security Token Service Certificate
Set-FASTSearchQRProxyMOSSConfiguration -STSThumbprint $sharepointSTSCert.Thumbprint -RestartServices true
$sharepointServicesCertThumbprint = $sharepointServicesCert.Thumbprint
netsh http add sslcert ipport=0.0.0.0:13286 certhash=$sharepointServicesCertThumbprint ‘appid={a5455c78-6489-4e13-b395-47fbdee0e7e6}’

One thought on “FAST Search Center – Unable to display this Web Part- Results page webpart error in SharePoint 2010

Leave a Reply

Your email address will not be published. Required fields are marked *