作为参数的Url被截获

时间:2008-10-15 08:34:28

标签: c# .net asp.net-mvc bad-request

在我的asp.net mvc应用程序中,我想检查某个url是否返回有效的响应。 因此,我将url发送到测试HttpWebRequest.GetResponse()的方法

在我的开发服务器(vs2008)上它运行正常。 但是,当在生产服务器上部署时,它会返回错误请求。 该方法永远不会被命中,我的asp.net自定义错误页面也没有被使用。

任何想法?

2 个答案:

答案 0 :(得分:1)

对于那些将来读过这篇文章的人: 我删除了http://部分,并使用HttpUtility.UrlPathEncode对路径进行编码,然后设置一个路由,将最后一部分作为{* uri}。 这使我能够在参数中使用/。

然后checkUri我通过添加http://重新创建uri,然后检查这个uri的主机是否是我期望的主机(在我的例子中是request.url.host)。

然后我用我创建的Uri创建httpwebrequest并检查请求是否有响应。

答案 1 :(得分:0)

也许您遇到了ASP.NET的ValidateRequest功能?您可以通过修改aspx文件中的第一行以使ValidateRequest =“false”参数来禁用相关页面。

示例:

<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" ValidateRequest="false" %>

您可能不希望将其置于该状态,因为请求验证有助于防止XSS攻击。如果你还没有使用HttpUtility.UrlEncode也值得一试。