2008-10-15 85 views
0

在我的asp.net mvc应用程序中,我想检查某个url是否返回有效的响应。 因此,我发送的网址到一个方法,测试HttpWebRequest.GetResponse()Url作为参数被拦截

在我的开发服务器(VS2008),它工作得很好。 但是,当部署在生产服务器上时,它会返回一个错误请求。 该方法从未命中,我的asp.net自定义错误页面不使用。

什么想法?

回答

1

对于那些在将来阅读过这些内容的人: 我删除了http://部分,并使用HttpUtility.UrlPathEncode对路径进行了编码,并放置了一条将最后一部分作为{* uri}的路径。 这使我可以在参数中使用/。

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

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

+0

正是我需要的感谢! – Webjedi 2009-05-14 23:29:00

0

也许您正在运行ASP.NET的ValidateRequest功能?您可以通过修改aspx文件中的第一行以使ValidateRequest =“false”参数禁用该页面。

例子:

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

你可能不希望把它留在那个状态,虽然,作为请求验证有助于防止XSS攻击。如果您尚未使用HttpUtility.UrlEncode,也值得尝试。