无法执行URL - 任何想法?

时间:2011-04-13 17:34:11

标签: c# asp.net exception

我在日志中看到以下异常的一些条目,并且不知道它发生的原因或位置:

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, AsyncCallback cb, 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应用程序。

3 个答案:

答案 0 :(得分:3)

我在使用Windows Identity Foundation时遇到了这个问题。通过将应用程序池切换为使用Integrated而不是Classic来解决问题。当URL上有一个尾部斜杠并重定向到登录页面时,它失败了。在url中指定完整页面没有给出错误。

答案 1 :(得分:1)

在经典管道模式下使用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();
      }
    }

在身份验证尝试之前,使用null User对象调用Application_AuthenticateRequest。只有在这种情况下,代码才会重定向到/Default.aspx(我的应用程序是Asp.Net Web表单)。这解决了我们的问题。

答案 2 :(得分:0)

当我在经典模式下将WIF与.NET 4.5应用程序一起使用时,我也遇到了这个问题。用户已从ADFS进行身份验证,然后用户收到此错误。以前,我是发送电子邮件地址->电子邮件地址作为声明的。添加另一个声明规则作为电子邮件地址->名称为我解决了此问题。