Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Start by reading this <a href="http://msdn.microsoft.com/en-us/library/bb226691(v=office.11).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/bb226691(v=office.11).aspx</a></p> <p>Then the shortcut bellow (it's not perfect, and the actual search is not implemented, but I hope it helps)</p> <p>1 Service interface</p> <pre><code>namespace CustomResearchServiceWCF { [ServiceContract(Namespace="urn:Microsoft.Search")] public interface IOfficeResearchService { [OperationContract(Action = "urn:Microsoft.Search/Registration")] string Registration(string regXML); [OperationContract(Action = "urn:Microsoft.Search/Query")] string Query(string queryXml); } </code></pre> <p>}</p> <p>2 Implementation</p> <pre><code>namespace CustomResearchServiceWCF { public class OfficeResearchService : IOfficeResearchService { public string Registration(string regXML) { var providerUpdate = new ProviderUpdate(); var writerSettings = new XmlWriterSettings {OmitXmlDeclaration = true,Indent=true}; var stringWriter = new StringWriter(); var serializer = new XmlSerializer(typeof(ProviderUpdate)); using (var xmlWriter = XmlWriter.Create(stringWriter, writerSettings)) { serializer.Serialize(xmlWriter, providerUpdate); } return stringWriter.ToString(); } public string Query(string queryXml) { throw new NotImplementedException(); } }} </code></pre> <p>3 ProviderUpdate, ResearchService and License</p> <pre><code>namespace CustomResearchServiceWCF { public class License { [XmlAttribute(AttributeName = "acceptRequired")] public bool AcceptRequired; public string LicenseText { get; set; } public License() { LicenseText = "some licensing information"; AcceptRequired = true; } } public class Provider { public string Message { get; set; } public License License { get; set; } public string Id { get; set; } public string Name { get; set; } public string QueryPath { get; set; } public string RegistrationPath { get; set; } public string Type { get; set; } public string AboutPath { get; set; } [XmlAttribute] public string Action { get; set; } [DataMember] public List&lt;ResearchService&gt; Services; public Provider() { Type = "SOAP"; License = new License(); Services = new List&lt;ResearchService&gt; { new ResearchService { Id = "{942F685E-0935-42c8-80C5-95DB0D129910}", Name = "Service", Description = "Custom Research Service", Copyright = "All content Copyright (c) 2003", Display = "ON" } }; } } [XmlType("Service")] public class ResearchService { /// &lt;summary&gt; /// The GUID that is used when the Query function is called to differentiate a response from your Research service from a response from another Research service /// &lt;/summary&gt; public string Id { get; set; } /// &lt;summary&gt; /// The name displayed in the Research task pane's Show Results From dropdown /// &lt;/summary&gt; public string Name { get; set; } /// &lt;summary&gt; /// //The description displayed in the Properties dialog box for the service /// &lt;/summary&gt; public string Description { get; set; } public string Copyright { get; set; } //Either On or Off; indicates whether the service should be displayed in the Show Results From dropdown. public string Display { get; set; } /// &lt;summary&gt; /// The category with which the service should be grouped in the Show Results From dropdown and the Research options dialog box. See the Microsoft.Search.Registration.Response schema for a list of all the choices. /// &lt;/summary&gt; public string Category { get; set; } public ResearchService() { Category = "RESEARCH_GENERAL"; } } [XmlRoot(Namespace = "urn:Microsoft.Search.Registration.Response")] public class ProviderUpdate { public string Status { get; set; } public List&lt;Provider&gt; Providers; public ProviderUpdate() { Status = "SUCCESS"; Providers = new List&lt;Provider&gt; { new Provider { Message = "Congratulations! You've registered Research Pane Examples!", Action = "UPDATE", Id = "{942F685E-0935-42c8-80C5-95DB0D129910}", Name = "Wiktionary", QueryPath = "http://services.highbeam.com/office/office.asmx", RegistrationPath = "http://services.highbeam.com/office/office.asmx", AboutPath = "http://www.highbeam.com" } }; } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload