Я пытаюсь создать httphandler, который будет перехватывать образец pdf файла, который есть у нас на сайте. Httphandler отлично работает на моей машине для разработки и даже на локально опубликованном веб-сайте, что если я просто попытаюсь подключиться к тестовой ссылке:
https://test.com/admin/_/sample_reports/sample.pdf Меня отправят на страницу с недействительным доступом.
Итак, отправляя его на наш компьютер IIS6, когда я пытаюсь перейти по URL-адресу, он подает документ PDF. context.User.Identity.IsAuthenticated всегда отображается как true.
Я использую аутентификацию по формам. ниже приведен код, который я использую в качестве обработчика.
public void ProcessRequest(HttpContext context)
{
if (context.User.Identity.IsAuthenticated)
{
string SampleURL = context.Request.AppRelativeCurrentExecutionFilePath;
context.Response.Buffer = true;
context.Response.Clear();
using (FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(SampleURL),FileMode.Open))
{
int length = (int)fs.Length;
byte[] buffer;
using (BinaryReader br = new BinaryReader(fs))
{
buffer = br.ReadBytes(length);
}
context.Response.Clear();
context.Response.Buffer = true;
context.Response.ContentType = "application/pdf";
context.Response.BinaryWrite(buffer);
context.Response.End();
}
}
else
{
context.Response.Redirect(
"~/Error/invalid_access.aspx");
}}
в web.config У меня есть следующее для проверки подлинности формы:
<authentication mode="Forms">
<forms name="Sample.Web" loginUrl="~/Security/" defaultUrl="~/default.aspx" protection="All" timeout="60" path="/" requireSSL="false" slidingExpiration="true" enableCrossAppRedirects="false" cookieless="UseDeviceProfile" domain="">
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>