我在日志中看到以下异常的一些条目,并且不知道它发生的原因或位置:
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应用程序。
答案 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进行身份验证,然后用户收到此错误。以前,我是发送电子邮件地址->电子邮件地址作为声明的。添加另一个声明规则作为电子邮件地址->名称为我解决了此问题。