缺少基于任务的WCF服务的帮助描述

时间:2016-10-04 09:44:48

标签: c# wpf web-services rest wcf

我目前正在WPF应用程序中托管一些Web服务。我还启用了自动帮助页面来简化服务文档。每个OperationContract都使用Description属性进行修饰,其中包含有关该方法的信息。

但是,每当我查看帮助页面时,我都会发现只有返回类型为void的方法才会在此处正确显示其Description属性。返回TaskTask<t>的方法只会说“localhost:XXXXX / ServiceEndpoint”。

由于此模式用于IPC,我非常依赖异步操作契约,因此大多数都会返回TaskTask<t>。有没有办法解决这个问题,以便正确显示帮助?

enter image description here

namespace App
{
    [ServiceContract]
    public interface IMainService
    {
        [OperationContract]
        [WebGet(UriTemplate = "visibility")]
        [Description("Gets the main window visibility.")]
        Task<bool> GetVisibilityAsync();

        [OperationContract]
        [WebInvoke(UriTemplate = "visibility", Method = "PUT")]
        [Description("Sets the main window visibility.")]
        Task SetVisibilityAsync(bool isVisible);

        [OperationContract]
        [WebInvoke(UriTemplate = "menu", Method = "PUT")]
        [Description("Navigates to the main menu.")]
        void NavigateToMainMenu();

        [OperationContract]
        [WebInvoke(UriTemplate = "shutdown", Method = "PUT")]
        [Description("Requests the application to shutdown.")]
        void RequestApplicationShutdown();
    }
}

这是我的app.config

<system.web>
    <compilation debug="false" targetFramework="4.5" />
  </system.web>

  <system.serviceModel>
    <services>

      <service name="App.MainService" behaviorConfiguration="rpcServiceBehavior">
        <endpoint binding="webHttpBinding" 
                  contract="App.IMainService"
                  behaviorConfiguration="webHttpBehavior" 
                  name="RpcEndpoint"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:25565/main"/>
          </baseAddresses>
        </host>
      </service>

    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="rpcServiceBehavior" >
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webHttpBehavior">
          <webHttp helpEnabled="true" automaticFormatSelectionEnabled="true"/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>


  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

1 个答案:

答案 0 :(得分:0)

尝试使用其他浏览器进行调试(或以隐身模式进行调试)。

解释

这是因为您可能添加了一些说明,并在浏览器中进行了检查。然后你添加了更多的描述标签并在你的浏览器上再次检查它,而不是重新加载页面,在缓存中打开一个。浏览器将在缓存中的浏览器中打开页面,而不是在页面静止时重新加载它。