gpt4 book ai didi

WCF 全局(.asax)行为

转载 作者:行者123 更新时间:2023-12-04 06:52:38 27 4
gpt4 key购买 nike

我想创建一个全局选项,当 REST 调用包含 &format=json 以将响应输出为 JSON 字符串时。

如果我在我的方法中输入以下字符串,它会起作用:

WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;

但是,如果我在 Global.asax 文件中的任何位置添加这一行,我会收到当前上下文的 nullException:
String format = "";

if (HttpContext.Current.Request.QueryString["format"] != null)
format = HttpContext.Current.Request.QueryString["format"];

if (String.Equals("json", format, StringComparison.OrdinalIgnoreCase))
System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.Format = System.ServiceModel.Web.WebMessageFormat.Json;

此处触发异常:
System.ServiceModel.Web.WebOperationContext.Current

任何人都知道我如何全局添加此功能(WCF)?

最佳答案

您可以通过服务行为将自己的 DispatchMessageInspector 添加到 WCF 处理管道。 Here是如何做到这一点。

要首先通过配置文件应用行为,您应该从 BehaviorExtensionElement 派生新类并覆盖成员 BehaviorType 和 CreateBehavior。
然后添加到类似的配置部分(使用您的完整类型名称)

<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="myBehavior" type="SomeNamespace.MyBehaviorExtensionElement, AssemblyName,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
</system.serviceModel>

然后
<behaviors>
<behavior configurationName="myServiceBehavior">
<myBehavior />
</behavior>
</behaviors>

最后将此配置应用于您的服务。

关于WCF 全局(.asax)行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2903636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com