身份验证可防止使用Code Behind中的WebClient()从Web表单发布到Classic ASP

问题描述 投票:0回答:2

我管理和旧网站(网站,而不是应用程序)是Web窗体和经典ASP的混合体。经典ASP正在逐步淘汰,但这可能还需要一年的时间。现在,我们正在放弃旧的身份验证形式,转而使用web.config中的Windows身份验证。

问题是我试图从Web表单(http://www.blahsiblah.com/index.aspx)后面的代码发布到Classic页面,并且收到401错误。

var webClient = new WebClient();
var urlClassicASP = "http://www.blahsiblah.com/classic.asp";
var responseArray = webClient.UploadValues(urlClassicASP, "POST", nameValueCollection);

这会抛出“远程服务器返回错误:(401)未经授权”

我的问题是,如何在不调用dotNet端的身份验证的情况下发布到经典页面?

asp.net post asp-classic windows-authentication
2个回答
1
投票

有多种方法可以实现这一点这是一个简单的建议,我希望有所帮助

.Net使用127.0.0.1(或您的内部192.169 / 10.1 *)IP发布到页面vs公共URL在向ASP页面发送请求时添加参数(称之为'bypassauth'或其他东西)添加参数标识您在.Net端进行身份验证的用户

ASP查找发生身份验证检查的包含,在该检查中,在返回401之前添加另一个条件,检查两件事情1)请求来自本地/内部IP 2)具有bypassauth参数3)用户ID是否有效

这样,如果从浏览器请求并且期望用户进行身份验证,您的旧ASP代码仍将继续工作,但是,当从.net发送请求时,您将绕过身份验证

我确信还有其他想法,但这只是一种方法


0
投票

我的解决方案是设置:

webClient.UseDefaultCredentials = true;
© www.soinside.com 2019 - 2024. All rights reserved.