0

カスタムエラーページをセットアップしようとしているiis 6で実行されているアプリケーション(アプリプールのあるフォルダー)があります。Web 構成にカスタム エラーの要素がありますが、表示されません。IIS にアクセスしてアプリのプロパティを確認すると、oops.html を指すようにカスタム エラーを設定できます。エラーを処理するために IIS が web.config の設定を使用していないようです。

これが私がweb.configに持っているものです

<system.web>
    ...
    <customErrors mode="On" defaultRedirect="/oops.html" redirectMode="ResponseRewrite" />
    ...
</system.web>
<system.webServer>
    ...
    <httpErrors existingResponse="PassThrough" />
    ...
<system.webServer>

アプリへのアドレスは次のようになります: www.mysite.com/myappfolder/

Web 構成は次の場所にあります: www.mysite.com/myappfolder/

oops.html は次の場所にあります: www.mysite.com/myappfolder/oops.html

www.mysite.com/myappfolder/NothingReal に移動しようとすると、404 がスローされ、IIS を oops.html にリダイレクトするように構成した場合にのみ、ページが表示されます。

customerrors のターゲットを指定するための規則は何ですか? ~/myappfolder/oops.html を使用する場合は、「/」を削除する必要がありますか? IIS 6 のエラー処理をバイパスして、すべてのエラーを自分のページにリダイレクトするにはどうすればよいですか?


WPF と Caliburn.Micro を使用して、ビュー内に複数のビューを追加します

私はWPFでCaliburn.Microを使用して学習しようとしています。ビュー内に複数のビューを追加するにはどうすればよいですか?

<Window x:Class="ProjectName.Views.MainView"
         ...>
<Grid>
        <views:MyControlView  />
</Grid>
</Window>

ビューモデルを使用した別のビュー: MyControlViewModel

<UserControl x:Class="ProjectName.Views.MyControlView"
         ...>
<Grid>
    ...
</Grid>
</UserControl>

ビューを追加するだけでは、適切な名前のビューモデルがあることが検出されません。これをバインドするにはどうすればよいですか?

私はさまざまなブートストラッパーを試し、cal:Bind.Model="path/classname/merge of the two" のようなものを使用しました。それをメインビューとユーザーコントロール(MyControlView)に追加しようとしました。この件に関してご協力いただき、誠にありがとうございます。私はかなり行き詰まっており、本当にCaliburn.Microを使いたいです:)

よろしく、ダイヤモンドフィッシュ

編集:私はまだそれを動作させることができません.問題はブートストラップか何かにあるようです. ただし、明確にするために、テストプロジェクト用に実行しているコードを次に示します。

MainView xaml:

<Window x:Class="Test.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro"
    xmlns:views="clr-namespace:Test.Views"
    Title="MainWindow" Height="360" Width="640">
<Grid>
    <views:MyControlView />
</Grid>

MainViewModel コード:

public partial class MainViewModel : PropertyChangedBase
{
}

MyControlViewxaml:

<UserControl x:Class="Test.Views.MyControlView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro"
         cal:Bind.Model="Test.MyControlViewModel"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <TextBlock Text="{Binding MyProp}"/>
</Grid>

MyControlView コード:

public class MyControlViewModel : PropertyChangedBase
{
    public string MyProp
    {
        get { return "Working"; }
    }
}

エラーのスクリーンショット: http://clip2net.com/s/1gtgt

私が試してみました

cal:Bind.Model="Test.ViewModels.MyControlViewModel" 

同じように。また、cal-referenceを試しました:

xmlns:cal="http://www.caliburnproject.org"

私のプロジェクトのスクリーンショットhttp://clip2net.com/s/1gthM

ドキュメンテーションは主に Silverlight 用であり、時々 CM ではなく Caliburn 用であるため、ブートストラッパーを間違って実装した可能性があります。このテスト プロジェクトでは、次のようになります: (App.xaml の .xaml-change を使用)

public class BootStrapper : Bootstrapper<MainViewModel>
{
}

ここで私を助けてください!それは私が見逃しているいくつかの基本的なもののようです:)

4

3 に答える 3

0

customErrorsweb.configの要素は、ASP.NETランタイムによって監視されるリソースにのみ適用されます。既定では、画像やHTMLファイルなどの静的リソースはIISによって処理され、ASP.NETランタイムに渡されることはありません。

于 2011-10-24T20:14:33.140 に答える
0

使ってみました~/oops.htmlか?

于 2011-10-24T18:07:53.350 に答える
0

したがって、これは問題の組み合わせでした。1 つ目は、サーバー上で 2 つのレベルのエラー処理が行われていることです。

最初のレベルは IIS にあります。IIS でエラーが発生すると、エラー ページを使用して問題を中継または不明瞭にします。

2 番目のレベルは、ASP ランタイムにあります。ページにエラーがある場合、Web 構成がそれを行うように構成されている場合、スクリプトは「oops」ページに委任できます。

asp が「oops」ページにリダイレクトしない場合、またはそのページの場所が正しくない場合、IIS はエラーを処理します。リダイレクトしない場合、500 レベルのエラーがスローされます。「oops」ページの場所が間違っている場合は、404 がスローされます。

私の問題は、これが処理される方法にあり、IIS と Web 構成が同じページを指していたため、デバッグが少し難しくなりました。

最後に、パスがリダイレクトを処理している webconfig に対して相対的であり、 ~/ が正しく使用されていないという最初の問題を解決しました。

于 2011-11-19T19:45:18.383 に答える