不允许使用用于访问路径的HTTP谓词POST

时间:2011-03-08 20:41:21

标签: c# .net asp.net

我没有使用URL重写,我的应用程序正常工作,直到我尝试通过我动态生成到LinkBut​​ton的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;
}

3 个答案:

答案 0 :(得分:2)

不要使用LinkBut​​ton。使用HyperLink控件。

HyperLink控件具有可以使用的NavigateUrl属性。

答案 1 :(得分:1)

当您使用LinkBut​​ton的PostBackUrl属性时,会使用POST谓词。从文档中引用:

  

PostBackUrl属性允许您   使用。执行跨页面帖子   LinkBut​​ton控件。设置   PostBackUrl属性为的URL   网页发布到的时候   单击LinkBut​​ton控件。对于   例如,指定Page2.aspx原因   包含LinkBut​​ton的页面   控制发布到Page2.aspx。如果你   不要指定值   PostBackUrl属性,页面发布   回到自己。

所以我建议您使用普通的超链接:

<a href="<%= ResolveUrl("~/files/foo.pdf") %>">foo.pdf</a>

答案 2 :(得分:0)

您要设置的链接按钮上还有其他一些属性。不是PostBackUrl,因为顾名思义,它是帖子!