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

时间:2019-04-09 04:45:16

标签: asp.net post asp-classic windows-authentication

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

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

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

这将引发“远程服务器返回错误:(401)未经授权”

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

2 个答案:

答案 0 :(得分:1)

有多种方法可以实现这一目标 这是一个简单的建议,希望对您有帮助

.Net 使用127.0.0.1(或您内部的192.169 / 10.1 *)IP与公共URL一起发布到页面 将请求发送到ASP页时添加一个参数(称为“ bypassauth”或唯一的东西) 添加一个参数,该参数标识您在.Net端已通过身份验证的用户

ASP 找到进行身份验证检查的位置,然后在该检查中添加其他条件,然后返回401,以检查两件事 1)请求来自本地/内部IP 2)具有bypassauth参数 3)用户名有效

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

我敢肯定还有其他想法,但这只是一种方法

答案 1 :(得分:0)

我的解决方法是设置:

webClient.UseDefaultCredentials = true;