在我的asp.net mvc应用程序中,我想检查某个url是否返回有效的响应。 因此,我将url发送到测试HttpWebRequest.GetResponse()的方法
在我的开发服务器(vs2008)上它运行正常。 但是,当在生产服务器上部署时,它会返回错误请求。 该方法永远不会被命中,我的asp.net自定义错误页面也没有被使用。
任何想法?
答案 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也值得一试。