2

EPiServerと呼ばれるCMS製品を使用しています。.NETの標準customErrorsでは実現できない404を表示する独自のメソッドを作成する必要があります。をチェックするために使用するモジュールを作成しましたHttpStatusCode。これはEndRequestメソッドで行います。

ステータスが404の場合、EPiServerに適切な404ページを照会してから、要求をそのページに転送します。ただし、これは404を返しません。また、次の手順を実行しても、正しいステータスは返されません。

HttpContext.Current.Response.StatusCode = 404;
HttpContext.Current.Response.StatusDescription = "Page not Found";
HttpContext.Current.Server.TransferRequest(newPage);

同様に、aの代わりにresponse.redirectを実行するTransferRequestと、URLが変更されたため、適切な404ではありません...

これを行う正しい方法は何ですか?

よろしくお願いしますアル

4

5 に答える 5

1

どのIISバージョンを使用していますか?IIS7または7.5の場合、次のようなものが必要になる場合があります。

<httpErrors errorMode="Custom">
        <remove statusCode="404" />
        <error statusCode="404" path="/somenotfoundpage.aspx" responseMode="ExecuteURL" />
        <remove statusCode="500" />
        <error statusCode="500" path="/someerrorpage.aspx" responseMode="ExecuteURL" />
</httpErrors>
于 2012-02-06T16:08:28.630 に答える
0

404ページに使用しているテンプレートのコードビハインドでステータスコードを設定する必要があります。

これがプレーンコンテンツページである場合は、新しいテンプレートを作成するか、ステータスコードプロパティをページに追加し、コードビハインドのロジックを追加して、これがnullまたは空でない場合に適切なヘッダーを送信します。

于 2012-02-06T12:05:26.253 に答える
0

エラーページテンプレートで、転送先のページにステータスコードを設定してみてください。個別のモジュールが必要かどうかはわかりません。Global.asax.cs で HttpApplication の Error イベントを簡単に処理できます。

于 2012-02-06T12:08:30.580 に答える
0

ご回答ありがとうございます。

私は実際に次のことを行うことでこれを機能させました:

EndRequest イベント ハンドラーで、要求を正しい EPiServer ページに転送し、呼び出しにクエリ文字列パラメーターを含めました。

app.Context.Server.TransferRequest(pageUrl + "&internal=true");

次に、PostRequestHandlerExecute イベントで、クエリ文字列パラメーターを確認します。存在する場合は、404 であるため、正しいステータスを返します。

HttpContext.Current.Response.StatusCode = 404; HttpContext.Current.Response.StatusDescription = "ページが見つかりません";

魅力のように機能します。

ありがとうヒグジー

于 2012-02-06T12:28:55.320 に答える