如何修复“枚举约束失败”?

Posted

技术标签:

【中文标题】如何修复“枚举约束失败”?【英文标题】:How can I fix "the Enumeration constraint failed"? 【发布时间】:2019-12-08 05:47:39 【问题描述】:

我一直在关注 Microsoft tutorial。关于设置启用 AJAX 的 WCF 服务并使用客户端访问它们。但是,尽管完全按照教程进行操作,但由于错误,结果不会按预期显示。具体来说,错误表明枚举约束失败,导致“名称”和“合同”属性无效。

错误似乎源自我的Web.config 文件,因为错误列表仅显示该文件中的问题。下面我包含了文件中的代码,以及我尝试访问的服务中的代码。

//The service model segment of the configuration file.  
<system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="SandwichServices.Service1AspNetAjaxBehavior">
          <enableWebScript />
        </behavior>
        <behavior name="SandwichServices.CostServiceAspNetAjaxBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
    <services>
      <service name="SandwichServices.CostService">
        <endpoint address="" behaviorConfiguration="SandwichServices.CostServiceAspNetAjaxBehavior"
          binding="webHttpBinding" contract="SandwichServices.CostService" />
      </service>
    </services>
  </system.serviceModel>
//The .svc.cs file for my service
using System.ServiceModel;
using System.ServiceModel.Activation;

namespace SandwichServices

    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class CostService
    
        [OperationContract]
        public double CostOfSandwiches(int quantity)
        
            return 1.25 * quantity;
        
    

Web.config 文件中出现以下错误消息:

“合同”属性无效 - 值 “SandwichServices.CostService”根据其数据类型无效 'serviceContractType' - 枚举约束失败。" " “名称”属性无效 - 值“SandwichServices.CostService” 根据其数据类型“serviceNameType”无效 - 枚举约束失败。

【问题讨论】:

我刚刚遵循了相同的教程并遇到了同样的问题 - 它对我也不起作用。你找到解决方案了吗? 【参考方案1】:

这是一个警告而不是错误,因此 Asp.net 应用程序可以成功构建。对于 WCF 服务(启用 ajax),这是一个兼容的解决方案,因为 WCF 对 Service 部分(一个用于接口,一个用于服务实现类)有严格的规定,如下配置。

<system.serviceModel>
<services>
      <service name="WcfService1.Service1">
        <endpoint address="" binding="basicHttpBinding" contract="WcfService1.IService1"></endpoint>
      </service>

总之,这个警告我们不用太在意,服务还是可以正常运行的。

【讨论】:

以上是关于如何修复“枚举约束失败”?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复drv?

如何修复 npm 审计修复问题?

如何修复WMI

如何修复AppScan漏洞

如何在DOS环境下修复系统

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)