使用ASP.Net Forms验证的WCF服务 - 在cookie过期时$ .ajax()调用期间出错

时间:2013-04-23 06:42:07

标签: asp.net wcf

我在IIS网站上托管了一个WCF服务,并使用表单验证。该服务有[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 属性和Web配置包含以下行:<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

使用$ .ajax()调用将服务称为表单页面。 Everithing工作正常,直到用户在cookie过期后调用服务。 在这种情况下,会出现“Windows安全”窗口,因为用户应该输入登录名和密码来访问该服务。 如果用户只是关闭窗口而没有做任何事情,页面将被重定向到登录页面(这是正确的)

问题:如何跳过此窗口并立即进行重定向? 我想有一些配置WCF服务,我尝试了一些绑定方案 - 但我无法逃避这个窗口。

WCF服务的配置:

 <system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="metadataAndDebug">
      <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="Project.Service.DataServiceAspNetAjaxBehavior">
      <enableWebScript/>
    </behavior>
  </endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
  <service name="Project.Service.DataService" behaviorConfiguration="metadataAndDebug" >
    <endpoint address="" behaviorConfiguration="Project.Service.DataServiceAspNetAjaxBehavior"
      binding="webHttpBinding" contract="Project.Service.DataService" />
  </service>
</services>

1 个答案:

答案 0 :(得分:0)

默认情况下,autoredirect功能处于启用状态。

如果出于某种原因,您想要关闭此功能,可以注册一个消息检查器来执行此操作。

public class MyMessageInspector : IDispatchMessageInspector
{
    internal const string RedirectPropertyName = "WebHttpRedirect";
    public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
    {
        // remove the RedirectPropertyName from the request
        if ( request.Properties.ContainsKey(RedirectPropertyName))
        {
            request.Properties.Remove(RedirectPropertyName);
        }
        return null;
    }
    public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
    {

    }
}
相关问题