質問

私の404 ASPXページにユーザーをリダイレクトするためのカスタムIHTTPModuleを持っています。

この例はインターネットのどこかで見つかったため、この部分はうまく機能していますが、今日の管理者は次の問題を報告します:

こんにちは 今日はこれに見られ、発見されました。Officeの文書から保存するときには、WebDAV用にトロールするHTTPモジュール「Pagenotfound」であることがわかります。文書を保存するときは、HTTP 302リダイレクトを追加します。これは、文書が存在しない場合にのみ発生し、既存の文書を介して保存してもうまく機能します。Web.Config WebDAVから「PagenotFoundHttpModule」を削除/追加することができます。

 void ApplicationPreSendRequestContent(object sender, EventArgs e)
        {
            HttpResponse response = app.Response;
            string requestedUrl = app.Request.Url.AbsolutePath;

            if (string.IsNullOrEmpty(requestedUrl))
            {
                LoggingService.WriteError("PageNotFoundHttpModule. PreSend request: HttpApplication Request.Url.AbsolutePath is null ");
                return;
            }

            try
            {
                var urlElements = requestedUrl.Split('/');
                if (urlElements.Length > 0)
                {
                    int pageElementIndex = urlElements.Length - 1;
                    string pageName = urlElements[pageElementIndex] as string;

                    if (string.IsNullOrEmpty(pageName))
                    {
                        pageName = string.Empty;
                    }

                    if (response.StatusCode == 404 && response.ContentType.Equals("text/html", StringComparison.CurrentCulture))
                    {
                        var pathLowercase = Constants.PageNotFoundUrl.ToLower().Trim();
                        var message = string.Format("{0}?oldUrl={1}&k={2}", pathLowercase, requestedUrl, pageName);
                        if (!pathLowercase.EndsWith(pageName.ToLower().Trim()))
                        {
                            response.Redirect(message);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingService.WriteError(ex, "PageNotFoundHttpModule. Exception while working");
            }
        }
.

ログをチェックし、次の例外を見ます:

    PageNotFoundHttpModule. Exception while working  Thread was being aborted.  
   at System.Threading.Thread.AbortInternal()     
at System.Threading.Thread.Abort(Object stateInfo)     
at System.Web.HttpResponse.End()     
at PageNotFoundHttpModule.ApplicationPreSendRequestContent(Object sender, EventArgs e).
.

しかし、私は本当にこのスレッドの何が悪いのか、そしてその理由が中止されたのか知りません。任意のアイデア?

役に立ちましたか?

解決 2

httpmethodが掲載されていないことを確認する必要があります。そしてリダイレクトを使うだけです。

app.request.httpmethod!="PropFind"

他のヒント

これはHttpContext の自然な動作です。

ページをリダイレクトしようとすると、現在のスレッドが中止され、システムは例外をスローします。

スレッドが中止したくない場合は、リダイレクトメソッドにFALSEを渡します。

response.redirect(メッセージ、false);

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top