首先,我已经广泛研究了_doPostBack是未定义的错误。我知道.NET 4.0和早期版本的.NET没有包含用于识别新浏览器的所有正确定义。我正在运行.NET 4.5,这个错误的性质似乎没有在关于这个问题的任何其他问题中解释。
在带有自定义路由的.NET 4.5和IE 11下,我在一个页面上没有定义_doPostback,只有一个按钮,没有母版页。但是,当我关闭自定义路由时,我不再收到错误。奇怪的是,当我重新开启路线时,它会继续工作一段时间"然后错误显示备份。我还重新启动计算机并继续收到错误,直到我关闭路由。
我重建了我的解决方案并关闭了所有浏览器。我有一条路线可能导致问题。但是,当我删除自定义路由时,它解决了这个问题。当我重新添加自定义路由时,它会工作一段时间,但之后会随机失败。
更新,我在Chrome下运行时也会看到奇怪的回发行为。随着"赶上所有"如果路由已启用,则客户端验证器似乎无法正常工作,但会将页面回发到服务器然后进行验证。
通用路线最后在我的路线列表中定义,但似乎没有任何区别。它就是这样设计的
routes.MapPageRoute(" DefaultRoute"," {Company} / {* queryvalues}", "〜/ Default.aspx的&#34);
有趣的是,此错误会影响在此路线之前更具体和定义的路线。
更新 我被要求发布路由规则。最后一条规则是造成问题的规则。该网站旨在支持许多客户。我之前认为我有更多特定的匹配规则,然后才能正常运行。然而,由于某种原因,捕获所有路线仍然会导致问题。最简单的解决方案是将其更改为命名路线,但不是那么优雅。此网站的先前结构使用客户端部分的虚拟目录。
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");