WCF-如何动态设置“ enableWebScript”?
|
我正在开发我的第一个WCF服务,它将支持多个Ajax调用。我以这种方式配置了一个端点:
<service behaviorConfiguration=\"ServiceBehavior\" name=\"AQM\">
<endpoint address=\"\" behaviorConfiguration=\"web\" binding=\"webHttpBinding\" bindingConfiguration=\"Binding1\" contract=\"IAQM\" />
</service>
和我的行为配置:
<endpointBehaviors>
<behavior name=\"web\">
<webHttp />
<enableWebScript />
</behavior>
</endpointBehaviors>
我需要创建自己的错误处理程序,以便可以将一些特定的信息格式化回客户端(请参阅此处http://zamd.net/2008/07/08/error-handling-with-webhttpbinding-for-ajaxjson/) 。我的WebServiceHostFactory看起来像这样:
public class MyServiceFactory : WebServiceHostFactory
{
public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses)
{
var sh = new ServiceHost(typeof(AQM), baseAddresses);
sh.Description.Endpoints[0].Behaviors.Add(new WebHttpBehaviorEx());
return sh;
}
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
return base.CreateServiceHost(serviceType, baseAddresses);
}
}
public class WebHttpBehaviorEx : WebHttpBehavior
{
protected override void AddServerErrorHandlers(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
// Clear default error handlers
endpointDispatcher.ChannelDispatcher.ErrorHandlers.Clear();
// Add our own error handler
endpointDispatcher.ChannelDispatcher.ErrorHandlers.Add(new ErrorHandlerEx());
}
但是,在创建自己的错误处理程序之后,似乎它会覆盖上面配置中的\“ enableWebScript \”设置,我认为这是有道理的,因为现在我正在动态创建自己的行为,具有上述任何配置设置。
我读到,出于安全目的,此设置应与WCF / Ajax一起使用(请参阅此处http://www.asp.net/ajaxlibrary/Using%20JSON%20Syntax%20with%20Ajax.ashx)。所以我的问题是,如何在动态创建的行为上设置\“ enableWebScript \”设置?还是不可能?
更新(2011年6月1日):我还希望动态更改行为,以使用Windows凭据进行身份验证。在配置文件中,它是这样完成的:
<bindings>
<webHttpBinding>
<binding name=\"Binding1\">
<security mode=\"TransportCredentialOnly\">
<transport clientCredentialType=\"Windows\" />
</security>
</binding>
</webHttpBinding>
</bindings>
这是我需要以编程方式进行的另一个设置,因为它似乎忽略了配置设置。
没有找到相关结果
已邀请:
2 个回复
黎喊病
陷牡彭拈峰
(继承自
)是密封的,因此您不能仅仅继承它。 更新:(从这里开始) WebScriptEnablingBehavior是WebHttpBehavior功能的“配置文件”,专门用于与ASP.NET AJAX客户端互操作。它增加了一些AJAX原理,例如自动生成ASP.NET AJAX客户端代理的功能。 我不确定您是否真的需要使用
,就像Carlos所说的那样,听起来好像只在使用ASP.NET AJAX时才需要。