标签: generic-handler

Ashx文件中的HttpContext.Current.Session为null

我看到了一些问题(这里这里),但他们没有回答我的问题.我试图使用"ajax.ashx"文件调用Ajax,并在函数中访问Session.出于某种原因,Session对象本身的值为null.

使用示例:

Session = HttpContext.Current.Session // This is null
Run Code Online (Sandbox Code Playgroud)

要么:

public virtual void ProcessRequest(HttpContext context)
{
    System.Web.SessionState.HttpSessionState Session = context.Session; 
    // This is null
}
Run Code Online (Sandbox Code Playgroud)

在Web.config中:

<sessionState timeout="1800"></sessionState>
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net session generic-handler

39
推荐指数
1
解决办法
3万
查看次数

ASP.NET通用处理程序和会话

我有GenericHandler和anonymousIdentification的问题.

基本上,如果<anonymousIdentification enabled="true" />在Web配置中打开,每当向服务器发送JQuery GET/POST请求时,该请求将在新用户和新用户会话下执行.

有没有办法缓解这种情况?我需要访问当前用户的会话变量......真的很令人沮丧!

c# asp.net session jquery generic-handler

18
推荐指数
2
解决办法
3万
查看次数

如何使用Ninject注入一些通用的asp.net http处理程序?

我是一个使用Ninject的新手,我无法弄清楚如何注入我的通用http处理程序.我有一个MVC3项目,我将我的服务注入到控制器中,没有任何问题.这是我在Ninject App_start类中用于注册服务的内容:

        private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind<NLSubscriber.Core.Service.Repository.INLUserRepository>().To<NLSubscriber.Core.Service.Repository.EFDAL.EFNLUserRepository>().InRequestScope();
        kernel.Bind<Neticon.Mvc.Helpers.IConfigHelper>().To<Neticon.Mvc.Helpers.AzureEnabledConfigHelper>().InSingletonScope();
        kernel.Bind<Neticon.Security.Service.IAuthenticationService>().ToMethod(m => Neticon.Security.Service.SecurityServiceFactory.CreateAuthenticationService()).InRequestScope();
        kernel.Bind<Neticon.Security.Service.IMembershipService>().ToMethod(m => Neticon.Security.Service.SecurityServiceFactory.CreateMembershipService()).InRequestScope();
        kernel.Bind<Neticon.Security.Service.IRoleManagerService>().ToMethod(m => Neticon.Security.Service.SecurityServiceFactory.CreateRoleManagerService()).InRequestScope();
Run Code Online (Sandbox Code Playgroud)

当我尝试通过使用属性注入(使用[inject]属性)从我的泛型处理程序获取一些服务时,我总是得到null.这是我的处理程序的样子:

    public class SubscriberHandler : IHttpHandler
{
    [Inject]
    public INLUserRepository userRep { get; set;}

    public void ProcessRequest(HttpContext context)
    {
        var users = userRep.GetUsers(); //userRep is always null here
    }


    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我也试过这样做:

    readonly INLUserRepository userRep;

    public SubscriberHandler()
    {

        using (IKernel kernel = new StandardKernel(new App_Start.NJRepositoryModule()))
        {
            userRep = kernel.Get<INLUserRepository>();
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我得到一个例外:"加载Ninject组件ICache时出错.在内核的组件容器中没有注册这样的组件.建议:1)如果你为KernelBase创建了一个自定义子类,请确保你已经正确实现了AddComponents( …

ninject generic-handler asp.net-mvc-3

7
推荐指数
2
解决办法
4056
查看次数

从成功的条带结账重定向

我正在使用带有 C# .Net 的 Stripes 支付网关。我首先创建一个结账,将用户重定向到 Stripe 的支付网关(我不想维护卡号等麻烦,所以这样它会转发到 Stripe 询问卡详细信息、处理付款等)https://stripe .com/docs/ payments/checkout/one-time - 这是在代码隐藏中完成的。

我将成功 URL 设置为 www.example.com/myHandler.ashx(通用处理程序)- 此 URL 将订单 ID 设置为成功。我的处理程序代码类似于https://stripe.com/docs/webhooks/build(因为我使用通用处理程序,所以我使用表单而不是 MVC)

付款成功后,付款会记录到我的数据库中。

考虑到这是一个网络钩子,我如何显示/重定向到感谢页面?

c# asp.net webhooks generic-handler stripe-payments

7
推荐指数
1
解决办法
2万
查看次数

将fancytree数据作为JSON数据传递

我想将数据从fancytree传递给通用处理程序,以便我可以将其保存以备将来使用.

如果我使用此代码:

function SaveTree() {
    var tree = $('#TopTree').fancytree("getTree");
    $.ajax({
        cache: false,
        url: "SaveTree.ashx",
        data: { 'treeData': tree },
        contentType: "application/json; charset=utf-8"
    });
}
Run Code Online (Sandbox Code Playgroud)

然后我从jquery.js得到以下错误:

JavaScript runtime error: Argument not optional
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

var tree = $('#TopTree').fancytree("getTree").rootNode.children;
Run Code Online (Sandbox Code Playgroud)

这给出了同样的错误.我理解这是因为'tree'不是JSON.如何将数据转换为JSON对象?

编辑:

如果我使用此代码:

function SaveTree() {
    var data = [];
    var tree = $('#TopTree').fancytree("getTree").rootNode.children;
    for (var i = 0; i < tree.length; i++) {
        data.push(tree[i].title)
    }
    data = JSON.parse(JSON.stringify(data))
    $.ajax({
        cache: false,
        url: "SaveTree.ashx",
        data: { 'treeData': data },
        contentType: "application/json; charset=utf-8"
    });
} …
Run Code Online (Sandbox Code Playgroud)

json generic-handler fancytree

6
推荐指数
1
解决办法
5533
查看次数

分配字节数组是否对性能至关重要?

在我的小型文件传输网站(这个网站,运行 .NET 4.5.1)中,我按照 Microsoft 知识库文章812406将以前上传的文件从服务器发送到浏览器。

做性能优化我很惊讶地发现那行

var buffer = new byte[10000];
Run Code Online (Sandbox Code Playgroud)

需要相当长的时间(我使用的是 Red Gate 的ANTS Performance Profiler)。每个完整下载/客户端仅分配一次缓冲区。

我的问题:

  • 以这种方式和这种大小分配缓冲区是一种好习惯吗?
  • 分配 ?10k 缓冲区的任何替代方案?

更新 1:

感谢您的评论,我已经看到内存也在循环内分配。

尽管如此,ANTS Profiler 只会将循环的分配标记为花费那么多时间,老实说,我(目前)还不明白这一点。我已经删除了循环内的(无意义的)分配。

更新 2:

实施了建议BufferManager并将缓冲区大小从 10k 减少到 4096(以防万一……)后,我的网站几天以来一直运行非常流畅。

.net c# performance generic-handler

5
推荐指数
1
解决办法
2845
查看次数

使用jQuery AJAX和Handler(ashx)进行文件上传无法正常工作

我正在尝试使用jQuery AJAX和通用处理程序上传图像文件.但似乎文件没有传递给处理程序.提交后context.Request.Files[0];始终为null: - /

我究竟做错了什么?

HTML:

<form id="form1" runat="server" method="post" enctype="multipart/form-data">

    <input name="file" id="file" type="file" />
    <input id="save" name="submit" value="Submit" type="submit" />

</form>
Run Code Online (Sandbox Code Playgroud)

JS:

$().ready(function ()
{
    $('#file').change(function () 
    {
        sendFile(this.files[0]);
    });
});

function sendFile(file) 
{
    $.ajax({
        type: 'post',
        url: 'FileUpload.ashx',
        data: file,
        success: function () {
            // do something
        },
        xhrFields:
        {
            onprogress: function (progress) 
            {
                // calculate upload progress
                var percentage = Math.floor((progress.total / progress.totalSize) * 100);

                // log upload progress to console
                console.log('progress', percentage);

                if …
Run Code Online (Sandbox Code Playgroud)

c# asp.net ajax jquery generic-handler

4
推荐指数
1
解决办法
2万
查看次数

通用处理程序中的"潜在危险Request.Form"异常

我以前见过这个错误,但似乎无法绕过它.在这种情况下,我有一个ASHX页面吐出一个简单的HTML表单,其中包含可以发布XML的文本框.当我尝试阅读表单时,我收到"有潜在危险的Request.Form值......".

由于它是通用处理程序,因此"ValidateRequest"属性不可用.但是我已经在web.config中定义了这个:

<location path="xml/MyGenericHandler.ashx">
    <system.web>
      <pages validateRequest="false" />
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

这个片段早于从.NET 3.5迁移到4.0,所以我猜这是破坏的起源.

知道如何解决ASHX页面的这个错误吗?

asp.net validation ashx dangerous-request generic-handler

3
推荐指数
1
解决办法
3703
查看次数

使用jquery ajax上传文件

我想上传一张描述如下的图片:

data = '{"filename":"' + myfilename + '", "file":"' + file + '", "description":"' +
    description + '"}';

$.ajax({
    type: "POST",
    url: "filehandler.ashx",
    data: data,
    success: function (result) {
        alert(result);
    },
    error: function () {
        alert("There was error uploading file!");
    }
});
Run Code Online (Sandbox Code Playgroud)

我该怎么做?我无法像HttpPostedFile通用处理程序一样读取文件. context.Request.Form也没有任何钥匙.

c# jquery json generic-handler

1
推荐指数
1
解决办法
5036
查看次数

使用 ashx 用 html 填充 div

是否可以使用通用处理程序 (*.ashx) 返回 html,我可以在 div 标签中使用它?

就像是

<div id="foo"> [call my generic handler which returns some html to be used within this div ] </div>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它不是图像,而只是 HTML。

谷歌搜索时没有找到任何东西。

c# asp.net generic-handler

1
推荐指数
1
解决办法
6894
查看次数

将参数传递给 C# 中的通用处理程序

我有一个用于 ASP.NET 网站的通用处理程序 (.ashx),它允许我从存储在 SQL Server 数据库中的二进制数据查看图像文件:

public class ImageProvider : IHttpHandler {

            public string connString = "...";

            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "image/jpeg";

                string sqlSelectQuery = "select img from Subjects Where [Id] = 'XXXX'";
                SqlConnection conn = new SqlConnection(connString);
                conn.Open();
                SqlCommand cmd = new SqlCommand(sqlSelectQuery, conn);

                byte[] img = (byte[])cmd.ExecuteScalar();
                context.Response.BinaryWrite(img);

            }
Run Code Online (Sandbox Code Playgroud)

我目前正在使用简单的 Response.Redirect() 命令将处理程序连接到网站的其余部分:

 Response.Redirect("ImageProvider.ashx");
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 在调用通用处理程序时如何传递任何类型的变量参数(sql 查询中的 XXX)?

非常感谢

c# asp.net generic-handler

1
推荐指数
1
解决办法
4246
查看次数

C#ASP.NET MVC2路由通用处理程序

也许我正在寻找错误的东西或试图以错误的方式实现这一点.我使用Generic Handler动态生成图像.我目前可以使用以下方式访问我

ImageHandler.ashx?width=x&height=y
Run Code Online (Sandbox Code Playgroud)

我更愿意使用类似的东西访问我的处理程序

images/width/height/imagehandler
Run Code Online (Sandbox Code Playgroud)

这可能是我在谷歌上找到的几个例子与MVC2不兼容.

干杯.

c# routing generic-handler asp.net-mvc-2

0
推荐指数
1
解决办法
2035
查看次数