まず、_doPostBack is undefined エラーを広範囲に調査しました。.NET 4.0 以前のバージョンの .NET には、新しいブラウザーを認識するための適切な定義がすべて含まれていなかったことを認識しています。私は .NET 4.5 を実行していますが、この問題に関する他の質問では、このエラーの性質が説明されていないようです。
カスタム ルーティングを使用する .NET 4.5 および IE 11 では、_doPostback is undefined が、単一のボタンがあり、マスター ページがないページで取得されます。ただし、カスタム ルーティングをオフにすると、エラーが発生しなくなりました。奇妙なことに、ルーティングをオンに戻すと、「しばらくの間」動作し続け、その後エラーが再び表示されます。また、コンピューターを再起動しましたが、ルーティングをオフにするまでエラーが発生し続けます。
ソリューションを再構築し、すべてのブラウザーを閉じました。問題を引き起こしている可能性のあるすべてをキャッチするルートがあります。ただし、カスタム ルーティングを削除すると、問題が修正されます。カスタム ルーティングを再度追加すると、しばらくは機能しますが、後でランダムに失敗します。
更新、Chrome で実行しているときに奇妙なポストバック動作も見られます。「キャッチオール」ルートが有効になっていると、クライアント側のバリデーターが機能していないように見えますが、代わりにページがサーバーにポストされてから検証されます。
ジェネリック ルートはルート リストの最後に定義されていますが、違いはないようです。そのように設計されています
routes.MapPageRoute("DefaultRoute", "{Company}/{*queryvalues}", "~/default.aspx");
興味深いのは、このバグが、このルートの前に定義されたより具体的なルートに影響を与えることです。
更新 ルーティング ルールを投稿するように依頼されました。最後のルールが問題の原因です。Web サイトは、多数のクライアントをサポートするように設計されています。私は、それらが適切に機能する前に、より具体的な一致ルールを追加した意味があると考えていました. ただし、何らかの理由で、キャッチオール ルートは依然として問題を引き起こします。最も簡単な解決策は、名前付きルートに変更することですが、それほどエレガントではありません。この Web サイトの以前の構造では、クライアント部分に仮想ディレクトリを使用していました。
RouteValueDictionary dynamicEventDefaults = new RouteValueDictionary();
dynamicEventDefaults.Add("Client", "");
dynamicEventDefaults.Add("EventId", "0");
routes.MapPageRoute("EventRoute", {Client}/Event/{EventId}/{*queryvalues}","~/DynamicEvent.aspx",
false, dynamicEventDefaults);
routes.MapPageRoute("DefaultRoute", "{Client}/{*queryvalues}", "~/default.aspx");