2011-06-01 26 views
1

我一直想知道我是否可以通过wsdl或asmx文件扩展名通过Microsoft Word 2010中的研究窗格添加自定义Web服务。我已经搜索了几乎每个有这些服务的站点,但没有找到指示。如果我想在这里问一个人,我觉得更有信心,而不是反复试验。有没有办法通过研究窗格将自定义Web服务添加到Word 2010?

基本上,我希望能够做的是添加一个网站,如http://www.ebi.ac.uk/Tools/webservices/wsdl或其他来源,并能够通过研究窗格发送查询。 Research Pane in Microsoft Word 2010 after unsuccessful addition

回答

2

开始通过阅读这篇http://msdn.microsoft.com/en-us/library/bb226691(v=office.11).aspx

然后在快捷波纹管(它不是完美的,实际的搜索没有实现,但我希望它能帮助)

1 Service接口

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); 
} 

}

2执行

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(); 
    } 
    }} 

3 ProviderUpdate,ResearchService和许可

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<ResearchService> Services; 

    public Provider() 
    { 
     Type = "SOAP"; 
     License = new License(); 
     Services = new List<ResearchService> 
         { 
          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 
{ 
    /// <summary> 
    /// 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 
    /// </summary> 
    public string Id { get; set; } 


    /// <summary> 
    /// The name displayed in the Research task pane's Show Results From dropdown 
    /// </summary> 
    public string Name { get; set; } 

    /// <summary> 
    /// //The description displayed in the Properties dialog box for the service 
    /// </summary> 
    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; } 


    /// <summary> 
    /// 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. 
    /// </summary> 
    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<Provider> Providers; 

    public ProviderUpdate() 
    { 
     Status = "SUCCESS"; 
     Providers = new List<Provider> 
         { 
          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" 
           } 
         }; 
    } 
} 
} 
相关问题