HttpContext.Current.User.Identity.Name在.ashx hander中不起作用
本文关键字:ashx hander 不起作用 Name Current User Identity HttpContext | 更新日期: 2023-09-27 18:26:15
我无法从处理程序文件中的HttpContext.Current.User.Identity.Name获得响应。数据没有传递给它吗?
<%@ WebHandler Language="C#" Class="uploadHandler" %>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public class uploadHandler : IHttpHandler {
public void ProcessRequest(HttpContext context)
{
HttpPostedFile file = context.Request.Files["fileData"];
string targetLocation = "D:''inetpub''wwwroot''upload.website.com''www''uploads''" + HttpContext.Current.User.Identity.Name + "''" + file.FileName;
file.SaveAs(targetLocation);
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
context.Response.Write(HttpContext.Current.User.Identity.Name);
}
public bool IsReusable {
get {
return false;
}
}
}
数据没有传递给它吗?
别指望我们能告诉你这些。您是调用处理程序的人,所以是否传递身份验证cookie取决于您自己。
话虽如此,似乎您的处理程序处理文件上传。您的调用方式对我们来说完全是个谜,但如果您使用的是一些客户端上传组件,如依赖Flash的Uploadify,则该组件可能不会在请求时发送身份验证和会话cookie。
正如这篇博客文章中所解释的,有一些变通办法。也讨论了这个类似的问题。
如果需要usersSession对象,该类可能还应该实现接口IRequiresSessionState。但也许上下文对你来说已经足够了?
public class uploadHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
...
}
请改用参数context
!
context.Response.Write(HttpContext.Current.User.Identity.Name);
变成
context.Response.Write(context.Current.User.Identity.Name);
如果您使用任何客户端组件,如Uploadify、Plupload,则可能是该组件没有随请求发送身份验证和会话cookie。对于变通方法,这里有一个很好的解释。
使用ASP.NET 查看Uploadify(会话和身份验证)