none
apk下载次数统计到数据库 RRS feed

  • 问题

  • html页面
    <a href="/Download/myapp.apk" class="load_android">下载</a>

    web.config
    <httpHandlers>
       <add verb="*" path="*.apk" type="Web.AppChuli.DownloadHandler,Web"/>
    </httpHandlers>

    处理类
    namespace Web.AppChuli
    {
        /// <summary>
        /// Download 的摘要说明
        /// </summary>
        public class DownloadHandler : IHttpHandler
        {

            public void ProcessRequest(HttpContext context)
            {
                string filePath = context.Request.FilePath;
                string fileType = filePath.Substring(filePath.LastIndexOf('.') + 1);

                MyDown model = new MyDown();
                model.D_FileName = filePath.Substring(filePath.LastIndexOf('/') + 1);
                if (fileType == "ipa")
                {
                    model.D_Type = "iso";
                }
                else if (fileType == "apk")
                {
                    model.D_Type = "android";
                }
                else
                {
                    return;//不予下载
                }
                try
                {
                    //更新数据库下载次数
                    MyDownData _downData = new MyDownData();
                    _downData.MyDown_Add(model);
                }
                catch (Exception)
                {
                    //错误
                }
                FileInfo file = new FileInfo(context.Server.MapPath(filePath));
                context.Response.Clear();
                if (file.Exists)
                {
                    //输入文件
                    context.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
                    context.Response.AddHeader("Content-Length", file.Length.ToString());
                    context.Response.ContentType = "application/octet-stream";
                    context.Response.WriteFile(file.FullName);
                    context.ApplicationInstance.CompleteRequest();
                }
                else
                {
                    context.Response.Write("不存在文件");
                }
                context.Response.End();
            }

            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }

    使用VS浏览网页下载时,可以写入数据库,可是一旦发布到IIS上,就没写入数据库了,为什么?

    另外,对外公布的二维码的下载地址是 http://..../Download/myapp.apk,二维码已经印刷成了产品,怎么记录这个的下载?如果不是要统计这个,a标签的地址我就不会直接链接到apk了,那样的话,就很好记录下载


    开心了就笑,不开心了就过会儿再笑

    2013年12月24日 6:31

答案

  • 你好,

    关于httphandler 发布到IIs之后不能工作,我们需要在web.configfile的system.webserver <system.webServer><handlers> 节点下注册自己的handler。而在vs时,实在system.web 节点下配置的。Such like this:

    <system.webServer> 
    
    <handlers> 
    
    <add name="TextHandler" path="*.Text" verb="*" type="TextHandler" resourceType="Unspecified" preCondition="integratedMode" /> 
    
    </handlers> 
    
    </system.webServer> 
    

    详细信息你可以参考这里:

    http://www.codeproject.com/Articles/96620/Writing-Http-Handlers-and-Modules-in-IIS-7-5

    关于apk下载量统计,我想你可以尝试着统计安装量而不是下载量,这样应该可以避免二维码的问题。

    希望对你有所帮助。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. <br/> Click <a href="http://support.microsoft.com/common/survey.aspx?showpage=1&scid=sw%3Ben%3B3559&theme=tech"> HERE</a> to participate the survey.

    • 已标记为答案 NewJoin 2013年12月25日 6:52
    2013年12月25日 3:30

全部回复

  • 你好,

    关于httphandler 发布到IIs之后不能工作,我们需要在web.configfile的system.webserver <system.webServer><handlers> 节点下注册自己的handler。而在vs时,实在system.web 节点下配置的。Such like this:

    <system.webServer> 
    
    <handlers> 
    
    <add name="TextHandler" path="*.Text" verb="*" type="TextHandler" resourceType="Unspecified" preCondition="integratedMode" /> 
    
    </handlers> 
    
    </system.webServer> 
    

    详细信息你可以参考这里:

    http://www.codeproject.com/Articles/96620/Writing-Http-Handlers-and-Modules-in-IIS-7-5

    关于apk下载量统计,我想你可以尝试着统计安装量而不是下载量,这样应该可以避免二维码的问题。

    希望对你有所帮助。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. <br/> Click <a href="http://support.microsoft.com/common/survey.aspx?showpage=1&scid=sw%3Ben%3B3559&theme=tech"> HERE</a> to participate the survey.

    • 已标记为答案 NewJoin 2013年12月25日 6:52
    2013年12月25日 3:30
  • 谢谢您上面的提供解决方案,不过网站目前是在经典模式下运行的。对于安装量,也有统计的。

    后来我改成集成模式了,报错  检测到在集成的托管管道模式下不适用的 ASP.NET 设置

    网上搜索一下,在<system.webServer>节点下 添加 <validation validateIntegratedModeConfiguration="false" /> 后解决了。数据库记录也有了,非常感谢您

    <add name="DownloadHandler" path="*.apk" verb="*" type="Web.AppChuli.DownloadHandler" resourceType="Unspecified" preCondition="integratedMode" />


    • 已编辑 NewJoin 2013年12月25日 6:54 补充,未修改之前的
    2013年12月25日 6:29