我有一个简单的 ASP.Net 网站,它接受 HTTP Post 并将文件保存到文件夹中。
网页本身会寻找“授权”HTTP 标头。
我创建了一个简单的 C# 应用程序,它上传了一个 HTTP Post 来上传文件:
using (var client = new WebClient())
{
client.Headers.Add(HttpRequestHeader.Authorization,
"Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("username:password")));
client.Headers.Add("TestHeader", "test");
client.Headers.Add("FileName", "RRO_D_VI_DLCRS_PPERASV02000000__01_02_001_91772ef0-e758-4886-b070-4db4cafe5366.gz");
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
byte[] result = client.UploadFile(url, fileToUpload);
string responseAsString = Encoding.Default.GetString(result);
}
当该网站在我的本地 PC 上运行并且我运行我的测试程序时,它可以正常工作。当我从 QA 服务器 (Windows Server 2003) 运行网站并运行我的测试程序时,它可以正常工作。
但是,当我从生产服务器(通过 VPN 访问)(Windows Server 2003 和 IIS6)运行网站时,“授权”标头完全丢失。我设置的所有其他 HTTP 标头都是可见的,但授权标头已被完全删除。
我还使用 Fiddler's Composer 对其进行了测试,结果相同。我让另一个人尝试从一个完全独立的网络(不使用 VPN)访问该网站,他们得到了相同的结果。
什么会导致 Authorization HTTP 标头被删除?有任何想法吗?
谢谢!
更新* 好的,我发现了问题。我将 POST 发送到 www.MyDomain.com,该网站的默认页面是 Default.aspx。如果我将请求发送到 www.MyDomain.com/Default.aspx 它工作正常。当请求转到 www.MyDomain.com 时,如何将授权标头转发到 Default.aspx?