使用带有PathInfo的URL时,ASP.NET回发将不起作用

时间:2009-08-13 12:17:41

标签: asp.net asp.net-3.5

我正在使用ASP.NET 3.5†编写一个网站,此阶段我的大部分网址都使用PathInfo,如:

http://localhost:<whatever>/Account.aspx/Login

唯一的问题是,当表单发回时,它会尝试使用URL:

http://localhost:<whatever>/Account.aspx/Account.aspx

到目前为止,我已尝试将按钮的PostbackURL属性设置为~/Account.aspx,但同样的事情发生了。

我也尝试过发布到单独的DoLogin.aspx页面,但表单变量不会随之发送。

我真的不想在Session集合中设置用户名和密码。

感谢。

†我会使用MVC,但我无法让它与我的主机一起正常工作。

1 个答案:

答案 0 :(得分:3)

这些文章的解决方法可以满足您的需求。

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx http://blogs.iis.net/ruslany/archive/2008/10/23/asp-net-postbacks-and-url-rewriting.aspx


我相信您的问题与影响使用网址重写的任何人的问题相同。虽然这些方法非常不同,但它们都会导致页面位置与系统认为页面位置不匹配。

快速提问 - 您是否有机会使用3.5 SP1? 如果是这样,您可以手动设置表单操作 - 基本上是

的内容
<form ID="ImAForm" action="~/Account.aspx" runat="server> 

不幸的是,我无法确定这是否是同一个问题。从逻辑上讲,它看起来似乎是同一个问题,但我找不到任何特定于pathInfo的东西,而且我的大多数经验都是使用URL重写。如果您没有SP1,则无法轻松覆盖表单操作,因此接下来要尝试的是第一个博客中引用的方法......

以下是文章的相关内容......

  

使用URL处理ASP.NET PostBack   重写

     

人们经常遇到的一个问题   使用ASP.NET和Url-Rewriting时   与处理回发有关   场景。具体来说,当你   放置一个控件   在页面上,ASP.NET将自动执行   默认情况下输出“动作”   标记的属性指向后面   到它所在的页面。问题   当使用URL重写时   控件呈现的URL   不是请求的原始URL   (例如:/ products / books),但是   而是重写的(for   例:   /products.aspx?category=books)。这个   意味着当你做回发时   服务器,URL将不是你的   干得好。

     

使用ASP.NET 1.0和1.1,人们常常   求助于分类   控制并创建自己的控件   正确输出动作   使用。虽然这有效,但它最终会成功   有点乱 - 因为它意味着   你必须更新你的所有页面   使用此备用表单控件,   它有时会有问题   使用Visual Studio WYSIWYG   设计师。

     

好消息是ASP.NET   2.0,有一个更清洁的技巧,你可以用来重写“动作”   控件的属性。   具体来说,你可以利用   新的ASP.NET 2.0控制适配器   可扩展性架构   自定义渲染   控制,并覆盖其“行动”   具有值的属性值   提供。这不需要你   更改.aspx页面中的任何代码。   相反,只需添加.browser文件即可   你的/ app_browsers文件夹   将Control Adapter类注册到   用来输出新的“动作”   属性:

希望有所帮助 - 对不起,我在最初的帖子中并不是很清楚。 如果这不成功,请告诉我......