无法执行URL-有什么想法吗?

问题描述

| 我在日志中看到以下异常的某些条目,但不知道其发生原因或发生位置:
Failed to Execute URL.
   at System.Web.Hosting.ISAPIWorkerRequestInProcForIIS6.BeginExecuteUrl(String url,String method,String childHeaders,Boolean sendHeaders,Boolean addUserIndo,IntPtr token,String name,String authType,Byte[] entity,AsyncCallback cb,Object state)
   at System.Web.HttpResponse.BeginExecuteUrlForEntireResponse(String pathOverride,NameValueCollection requestHeaders,Object state)
   at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context,AsyncCallback callback,Object state)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)
有没有人遇到过这个问题,或者可能对此有所了解?我在IIS7上运行.net 3.5 c#Web应用程序。     

解决方法

我只是在使用Windows Identity Foundation时碰到的。通过将应用程序池切换为使用“集成”而不是“经典”解决了问题。当URL上出现斜杠并重定向到登录页面时,它失败了。在url中指定整页并没有给出错误。     ,在经典管道模式下使用WIF时,我遇到了相同的错误。由于不幸的是我们无法将应用程序更改为集成管道模式,因此我为David Scott所描述的特定方案实施了修复程序。 在global.asax.cs中:
    protected void Application_AuthenticateRequest(object sender,EventArgs e)
    {        
      // Fix for \"Failed to Execute URL\" when non-authenticated user 
      // browses to application root 
      if ((User == null) 
        && (string.Compare(Request.Url.AbsolutePath.TrimEnd(\'/\'),Request.ApplicationPath,true) == 0))
      {
        Response.Redirect(Request.ApplicationPath + \"/Default.aspx\");
        HttpContext.Current.ApplicationInstance.CompleteRequest();
      }
    }
在尝试进行身份验证之前,将使用空的User对象调用“ 2”。仅在这种情况下,代码才从/重定向到/Default.aspx(我的应用是Asp.Net Web表单)。这为我们解决了问题。     ,当我在经典模式下将WIF与.NET 4.5应用程序一起使用时,我也遇到了这个问题。用户已从ADFS进行身份验证,然后用户收到此错误。以前,我是发送电子邮件地址->电子邮件地址作为声明。添加另一个声明规则作为“电子邮件地址->名称”对我来说解决了这个问题。