缺少基于任务的 WCF 服务的帮助描述
Posted
技术标签:
【中文标题】缺少基于任务的 WCF 服务的帮助描述【英文标题】:Missing help description for task based WCF service 【发布时间】:2017-02-12 10:19:52 【问题描述】:我目前在 WPF 应用程序中托管一些 Web 服务。我还启用了自动帮助页面来简化服务文档。每个OperationContract
都用Description
属性修饰,包含有关方法的信息。
但是,每当我查看帮助页面时,我意识到只有返回类型为 void
的方法才能在此处正确显示其 Description
属性。返回Task
或Task<t>
的方法只会显示“Service at localhost:XXXXX/ServiceEndpoint”。
由于这种模式用于 IPC,我非常依赖异步操作合约,因此它们中的大多数将返回 Task
或 Task<t>
。有什么办法可以解决这个问题,以便正确显示帮助?
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】:尝试使用其他浏览器(或隐身模式)进行调试。
解释:
这是因为您可能添加了一些描述,并在浏览器上进行了检查。然后您添加了更多描述标签并在浏览器上再次检查它,而不是重新加载页面,而是打开缓存中的那个。当页面为静态时,浏览器将在浏览器中的缓存中打开页面,而不是重新加载。
【讨论】:
以上是关于缺少基于任务的 WCF 服务的帮助描述的主要内容,如果未能解决你的问题,请参考以下文章
在 wcf rest 服务 C# 中使用 Stream 作为输入时缺少第一个元素
.NET Core 上的 WCF 在授权方案中缺少客户端协商方案