wcf - entlib wcf 集成在尝试通过引用传递参数时抛出异常
问题描述
在 WCF 服务应用程序中使用企业库时,当我们尝试对具有通过引用传入的参数的操作使用验证时遇到以下异常:
运营合同:
Hubs GetRoute(
string sourceDepotId,
[NotNullValidator(MessageTemplate = "...")]
[RegexValidator("[a-zA-Z]", MessageTemplate = "...")]
[StringLengthValidator(2, RangeBoundaryType.Inclusive, 2, RangeBoundaryType.Inclusive, MessageTemplate = "...")]
string countryCode,
string zipCode,
DateTime shippingDate,
DateTime? deliveryDate,
ref RoutingCodes routingCode,
out string errorMessage);
例外:
'RoutingCodes&' 类型不能用作类型参数。
[ArgumentException: The type 'RoutingCodes&' may not be used as a type argument.]
System.RuntimeType.ThrowIfTypeNeverValidGenericArgument(RuntimeType type) +14240432
System.RuntimeType.SanityCheckGenericArguments(RuntimeType[] genericArguments, RuntimeType[] genericParamters) +57
System.RuntimeType.MakeGenericType(Type[] instantiation) +218
Microsoft.Practices.EnterpriseLibrary.Validation.ValidatorFactory.WrapAndInstrumentValidator(Validator validator, Type type) +87
Microsoft.Practices.EnterpriseLibrary.Validation.ValidatorFactory.FindOrCreateValidator(ValidatorCacheKey cacheKey, Func`3 wrapAndInstrument) +190
Microsoft.Practices.EnterpriseLibrary.Validation.ValidatorFactory.CreateValidator(Type targetType, String ruleset) +176
Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF.ValidationParameterInspector.CreateInputParameterValidator(ParameterInfo param, String ruleSet) +99
Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF.ValidationParameterInspector..ctor(OperationDescription operation, String ruleSet) +221
Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF.ValidationBehavior.ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime) +161
System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost) +5106
System.ServiceModel.ServiceHostBase.InitializeRuntime() +85
System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +48
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +293
System.ServiceModel.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity) +129
System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) +733
所述类型是枚举类型。我知道您实际上可以在 WCF 中通过 ref 传递参数并且它可以工作,如文档中所述。
这是企业库验证块中的错误还是我们做错了什么?除了不使用验证块之外,您如何规避异常?
解决方案
推荐阅读
- android - Angular 8 + Cordova 6 = 空白页
- python - 删除每个单词除第一个字母以外的所有字母并保留标点符号
- filter - 同一属性上的 SAP Cloud OData 过滤器逻辑(substringof 和 substringof)失败
- javascript - 在 angularMaterialTable 中使用 *ngIf
- python - 在 DolphinDB 中的 Datetime 列上像 pandas 一样滚动
- r - 在单元格中保存一列
- google-apps-script - Apps 脚本 - 如何用普通字符替换 Google Docs 中的智能引号字符?
- javascript - 从同一数组中的其他索引值插入索引值
- jquery - 如何编写 Angular 8 的 jQuery ajax 等价物?
- flutter - 如何在执行长操作时只允许使用流或缓冲流事件的单个执行任务