C# Url作为参数被截获

C# Url作为参数被截获,c#,.net,asp.net-mvc,bad-request,C#,.net,Asp.net Mvc,Bad Request,在我的asp.net mvc应用程序中,我想检查某个url是否返回有效响应。 因此,我将url发送到一个测试HttpWebRequest.GetResponse()的方法 在我的开发服务器(vs2008)上,它工作得很好。 但是,在生产服务器上部署时,它会返回错误的请求。 该方法从未命中,并且未使用我的asp.net自定义错误页 有什么想法吗?也许您遇到了ASP.NET的功能?您可以通过修改aspx文件中的第一行,使其具有ValidateRequest=“false”参数,来禁用该页面 例如:

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

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


有什么想法吗?

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

例如:

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


不过,您可能不想让它保持这种状态,因为请求验证有助于防止XSS攻击。如果您还没有尝试使用HttpUtility.UrlEncode,那么也值得一试。

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

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


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

看到它对您的帮助,我想我可以接受自己的响应作为响应。