我在IIS 7中设置了一个站点,它使用Windows身份验证作为唯一启用的身份验证模式。它使用自定义.NET 4应用程序池 - 池使用默认的ApplicationPoolIdentity。此站点是一个C#/ ASP.NET应用程序,具有自己的页面授权规则(使用Iron Speed Designer 9生成)。我在下面设置了两个绑定:
servicedirectory.sampledomain.com
booking.sampledomain.com
这两个绑定都映射到端口80上所有可用IP上的站点。
在大多数情况下,浏览任一绑定都能成功运行,除了某个页面,我创建了一个WebRequest,它将另一个页面作为Stream提取。 (我正在获取其他页面的内容并将它们作为附件嵌入到iCal(.ics)文件中以包含在会议请求中。该文件由用户下载并发送出去)
String request = Request.Url.GetLeftPart(UriPartial.Path).
Replace("Conference.aspx", "Confirmation.aspx") +
"?Conference=" + conference.ConferenceId;
WebRequest webRequest = WebRequest.Create(request);
webRequest.UseDefaultCredentials = true;
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
Stream newStream = webRequest.GetRequestStream();
// Send the data.
newStream.Close();
WebResponse webResponse = webRequest.GetResponse();
Stream responseStream = webResponse.GetResponseStream();
using (MemoryStream ms = new MemoryStream())
{
responseStream.CopyTo(ms);
attachmentContent = Convert.ToBase64String(ms.ToArray());
}
responseStream.Close();
问题如下:当用户在第一个绑定(servicedirectory.sampledomain.com)下浏览时,此代码成功并从Confirmation.aspx页面生成内容作为String数据(attachmentContent变量)。但是,当通过其他绑定URL浏览时,WebResponse webResponse = webRequest.GetResponse();
行出现401.1错误。应用程序源代码或web.config中有 no 引用要么绑定 - 所有内容都是为了部署到任何URL而构建的。
为什么两个不同的绑定会影响这个?