我没有使用URL重写,我的应用程序正常工作,直到我尝试通过我动态生成到LinkButton的PostBackUrl的链接来点击.PDF文件甚至.TXT文件。路径是正确的。
我已经在这里彻底研究了这个问题,大多数问题都是人们使用或不使用POST操作或URL重写,我不是。
在IIS错误中看起来像:
Server Error in Application "DEFAULT WEB SITE/EVENTS"Internet Information Services 7.5
Error Summary
HTTP Error 405.0 - Method Not Allowed
The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used. Detailed Error Information
Module StaticFileModule
Notification ExecuteRequestHandler
Handler StaticFile
Error Code 0x80070001
Requested URL http://localhost:80/Events/EventDocs/48ea946f-e948-e011-ad73-00155d0e670b/2011.pdf
Physical Path C:\projects\Events\EventDocs\48ea946f-e948-e011-ad73-00155d0e670b\2011.pdf
动态生成要点击的网址的代码在这里:
public void DocumentsRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
LinkButton LinkToDoc = (LinkButton)e.Item.FindControl("LinkToDoc");
Label FileNameLabel = (Label)e.Item.FindControl("FileNameLabel");
LinkToDoc.PostBackUrl = "~/EventDocs/" + SessionValue.EventId.ToString() + "/" + FileNameLabel.Text;
LinkToDoc.Text = FileNameLabel.Text;
}
答案 0 :(得分:2)
不要使用LinkButton。使用HyperLink控件。
HyperLink控件具有可以使用的NavigateUrl属性。
答案 1 :(得分:1)
当您使用LinkButton的PostBackUrl属性时,会使用POST谓词。从文档中引用:
PostBackUrl属性允许您 使用。执行跨页面帖子 LinkButton控件。设置 PostBackUrl属性为的URL 网页发布到的时候 单击LinkButton控件。对于 例如,指定Page2.aspx原因 包含LinkButton的页面 控制发布到Page2.aspx。如果你 不要指定值 PostBackUrl属性,页面发布 回到自己。
所以我建议您使用普通的超链接:
<a href="<%= ResolveUrl("~/files/foo.pdf") %>">foo.pdf</a>
答案 2 :(得分:0)
您要设置的链接按钮上还有其他一些属性。不是PostBackUrl,因为顾名思义,它是帖子!