先前发过一篇贴子:http://topic.csdn.net/u/20100426/10/68b401c1-200d-4cab-a648-f55bf33e03f5.html我在WEB.CONFIG中按如下配置
<location path="report">
  <system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
但我尝试了,通过输入路径如: http://www.mywebsite.com/report/00001.jpg
还是可以查看到该路径下的图片。
我的要求是,未登录用户是不可以查到该图片的,即使登录了,也不能通过输入全路径直接查看到图片,该如何做呢?
图片的查看必须是通过某一页面的调用才能查看到图片。但解决得不是很理想。
我再说一下我的需求:
要求某路径下的图片未登录用户不得通过输入全路径来查看。
如某图片存放在 http://www.abc.com/www/aa.jpg.
aa.jpg 不可以通过输入上述全路径访问到,必须是经过登录验证后方可查到该图片。
开发工具:VS2005,C#
服务器平台:WIN SERVER2003 IIS6.在我前次结的贴中,回复的人确实按我的需求解决了我的问题,但只是在我的个人电脑上,调试过程中符合要求,一发布到服务器上,就好像失效了。
所以再次询问该问题该如何解决?WEB.CONFIG该如何配置?IIS如何设置?

解决方案 »

  1.   

    HttpHandler
    http://www.cnblogs.com/jimmyzhang/articles/894124.html
      

  2.   

    report是你的网站根目录下的子目录?
    试试
    <location path="/report">
      

  3.   

    你还可以直接在哪个report文件夹下建一个web.config,禁止访问也行啊!或者是你检查下你的web.config与report文件夹是否在同一路径下
      

  4.   

    图片防盗链
    public class ImgProtectHadler:IHttpHandler  
      {  
      public bool IsReusable  
      {  
      get  
      {  
      return true;  
      }  
      }  
      public void ProcessRequest(HttpContext context)  
      {  
      string path = context.Request.PhysicalPath;  
      string serverHost = context.Request.Url.Host;  
      Uri u = context.Request.UrlReferrer;  
      if (u == null || u.Host.ToLower() != serverHost.ToLower())  
      {  
      context.Response.WriteFile("~/a.gif");  
      }  
      else  
      {  
      context.Response.WriteFile(path);  
      }  
      }    }  
    }  
    <httpHandlers>  
      <add verb="*" path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" type="ImgProtect.ImgProtectHadler"/>  
      </httpHandlers>  
      

  5.   

    写个实现IHttpHandler接口的方法就可以了,再web.cofig中注册下, 
      

  6.   

    <location path="report">
      <system.web>
    <authorization>
    <deny users="?" />
    <deny users="*" />
    </authorization>
    </system.web>
    </location>
    这样试下
      

  7.   

    用管道技术,从写IHttpHandler,
      

  8.   

    图片不放到IIS目录下,通过流方式读取