身份验证阻止使用代码隐藏中的 WebClient() 从 Web 表单发布到 Classic ASP
Authentication prevents posting to Classic ASP from Web form using WebClient() from Code Behind
我正在管理混合了 Web 表单和经典 ASP 的旧网站(站点,而非应用程序)。 Classic ASP 正在逐步淘汰,但这可能还需要一年时间。现在,我们正在放弃旧形式的身份验证,转而使用 web.config 中的 Windows 身份验证。
问题是我试图从 Web 表单 (http://www.blahsiblah.com/index.aspx
) 的代码后面 post 到经典页面,但收到 401 错误。
var webClient = new WebClient();
var urlClassicASP = "http://www.blahsiblah.com/classic.asp";
var responseArray = webClient.UploadValues(urlClassicASP, "POST", nameValueCollection);
这会抛出 "The remote server returned an error: (401) Unauthorized"
我的问题是,如何在不调用dotNet端认证的情况下post到经典页面?
有多种方法可以实现这一点
这是一个简单的建议,希望对您有所帮助
.Net
使用 127.0.0.1(或您的内部 192.169 / 10.1* )IP 到 post 页面与 public URL
在向 ASP 页面发送请求时添加一个参数(称之为 'bypassauth' 或其他独特的东西)
添加一个参数,标识您在 .Net 端验证的用户
ASP
找到正在进行身份验证检查的包含,并在该检查中,在返回 401 检查两件事之前添加另一个条件
1) 请求来自 local/internal IP
2)有bypassauth参数
3) 用户id有效
这样,如果浏览器发出请求,您的旧 ASP 代码仍将继续工作,并希望用户通过身份验证,但是,当从 .net 发送请求时,您将绕过身份验证
我相信还有其他想法,但这只是一种方法
我的解决方案是设置:
webClient.UseDefaultCredentials = true;
我正在管理混合了 Web 表单和经典 ASP 的旧网站(站点,而非应用程序)。 Classic ASP 正在逐步淘汰,但这可能还需要一年时间。现在,我们正在放弃旧形式的身份验证,转而使用 web.config 中的 Windows 身份验证。
问题是我试图从 Web 表单 (http://www.blahsiblah.com/index.aspx
) 的代码后面 post 到经典页面,但收到 401 错误。
var webClient = new WebClient();
var urlClassicASP = "http://www.blahsiblah.com/classic.asp";
var responseArray = webClient.UploadValues(urlClassicASP, "POST", nameValueCollection);
这会抛出 "The remote server returned an error: (401) Unauthorized"
我的问题是,如何在不调用dotNet端认证的情况下post到经典页面?
有多种方法可以实现这一点 这是一个简单的建议,希望对您有所帮助
.Net 使用 127.0.0.1(或您的内部 192.169 / 10.1* )IP 到 post 页面与 public URL 在向 ASP 页面发送请求时添加一个参数(称之为 'bypassauth' 或其他独特的东西) 添加一个参数,标识您在 .Net 端验证的用户
ASP 找到正在进行身份验证检查的包含,并在该检查中,在返回 401 检查两件事之前添加另一个条件 1) 请求来自 local/internal IP 2)有bypassauth参数 3) 用户id有效
这样,如果浏览器发出请求,您的旧 ASP 代码仍将继续工作,并希望用户通过身份验证,但是,当从 .net 发送请求时,您将绕过身份验证
我相信还有其他想法,但这只是一种方法
我的解决方案是设置:
webClient.UseDefaultCredentials = true;