Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何知道已向C#,ASP.Net请求了哪个映像_C#_Asp.net - Fatal编程技术网

如何知道已向C#,ASP.Net请求了哪个映像

如何知道已向C#,ASP.Net请求了哪个映像,c#,asp.net,C#,Asp.net,我正在开发一个网络应用程序。这将生成指向我的服务器上的图像的随机链接。差不多- 在这里,这个链接可以被他们网站上的任何人使用,现在我只想知道有多少网站在使用我的链接,而不需要任何人点击这些链接 可以使用HTTPModule完成吗 这和谷歌搜索一样简单吗?寻找 link:http://dummy.com/Images/Image1.jpg?id=19234 如果您想以编程方式执行此操作,则需要使用Google API。这像谷歌搜索一样简单吗?寻找 link:http://dummy.com/Im

我正在开发一个网络应用程序。这将生成指向我的服务器上的图像的随机链接。差不多-

在这里,这个链接可以被他们网站上的任何人使用,现在我只想知道有多少网站在使用我的链接,而不需要任何人点击这些链接


可以使用HTTPModule完成吗

这和谷歌搜索一样简单吗?寻找

link:http://dummy.com/Images/Image1.jpg?id=19234

如果您想以编程方式执行此操作,则需要使用Google API。

这像谷歌搜索一样简单吗?寻找

link:http://dummy.com/Images/Image1.jpg?id=19234

如果您想以编程方式完成此操作,则需要使用Google API。

Oddthinking是正确的。请参阅或谷歌的API。它们给出了PHP和Java的例子,但也有用于ASP.NET()的AJAX框架,我相信C#也是如此。

Oddthinking是正确的。请参阅或谷歌的API。它们给出了PHP和Java的例子,但也有ASP.NET()的AJAX框架,我相信C#也是如此。

HttpHandler的问题是,它通常只对ASP.NET引擎处理的请求起作用——图像请求通常由IIS处理,而不经过处理程序

你的网络日志应该能够告诉你服务器上任何给定项目的推荐人是谁——假设你有他们,并且你有东西来处理他们——这将比使用谷歌更准确

展望未来,我在过去做过的一种方法是由HttpHandler(实现IHttpHandler)生成映像

这将以流的形式返回图像(将内容类型设置为“image/jpeg”),您可以添加进一步的处理(例如记录请求(referer)的来源等)

我在HttpHandler中发现的限制是,一些服务(例如PBB)需要一个映像链接来拥有映像扩展名——我通过使用ASP.Net页面处理所有404来解决这个问题,该页面检查请求中的.jpg扩展名。如果找到一个,它将返回重新请求的图像,而不是返回通常的404页面。不过,您需要在IIS中配置404处理程序,因为web.config错误处理程序仅适用于ASP.Net请求(web服务和.aspx类型页面)

示例处理程序:

// Sample from the ASP.Net Personal Web Site Starter Kit
public class Handler : IHttpHandler
{
    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        // Set up the response settings
        context.Response.ContentType = "image/jpeg";
        context.Response.Cache.SetCacheability(HttpCacheability.Public);
        context.Response.BufferOutput = false;

        // QueryString parameters are available here:
        // context.Request.QueryString["QueryStringKey"]

        // You can also access the Referrer object, and log the requests here.

        Stream stream;
        // Read your image into the stream, either from file system or DB
        if (stream == null)
        {
            stream = PhotoManager.GetPhoto();
        }

        // Write image stream to the response stream
        const int buffersize = 1024 * 16;
        var buffer = new byte[buffersize];
        int count = stream.Read(buffer, 0, buffersize);
        while (count > 0)
        {
            context.Response.OutputStream.Write(buffer, 0, count);
            count = stream.Read(buffer, 0, buffersize);
        }
    }
}

您可以在404页面中使用类似的代码(或者更好,将主图像流代码重构为共享类),检查图像扩展是否存在,并以这种方式呈现图像(同样,设置内容类型等).

使用HttpHandler的问题是,它通常只会启动由ASP.Net引擎处理的请求-映像请求通常由IIS处理,而不经过处理程序

你的网络日志应该能够告诉你服务器上任何给定项目的推荐人是谁——假设你有他们,并且你有东西来处理他们——这将比使用谷歌更准确

展望未来,我在过去做过的一种方法是由HttpHandler(实现IHttpHandler)生成映像

这将以流的形式返回图像(将内容类型设置为“image/jpeg”),您可以添加进一步的处理(例如记录请求(referer)的来源等)

我在HttpHandler中发现的限制是,一些服务(例如PBB)需要一个映像链接来拥有映像扩展名——我通过使用ASP.Net页面处理所有404来解决这个问题,该页面检查请求中的.jpg扩展名。如果找到一个,它将返回重新请求的图像,而不是返回通常的404页面。不过,您需要在IIS中配置404处理程序,因为web.config错误处理程序仅适用于ASP.Net请求(web服务和.aspx类型页面)

示例处理程序:

// Sample from the ASP.Net Personal Web Site Starter Kit
public class Handler : IHttpHandler
{
    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        // Set up the response settings
        context.Response.ContentType = "image/jpeg";
        context.Response.Cache.SetCacheability(HttpCacheability.Public);
        context.Response.BufferOutput = false;

        // QueryString parameters are available here:
        // context.Request.QueryString["QueryStringKey"]

        // You can also access the Referrer object, and log the requests here.

        Stream stream;
        // Read your image into the stream, either from file system or DB
        if (stream == null)
        {
            stream = PhotoManager.GetPhoto();
        }

        // Write image stream to the response stream
        const int buffersize = 1024 * 16;
        var buffer = new byte[buffersize];
        int count = stream.Read(buffer, 0, buffersize);
        while (count > 0)
        {
            context.Response.OutputStream.Write(buffer, 0, count);
            count = stream.Read(buffer, 0, buffersize);
        }
    }
}

您可以在404页面中使用类似的代码(或者更好,将主图像流代码重构为共享类),检查图像扩展是否存在,并以这种方式呈现图像(同样,设置内容类型等)。

您可以将图像扩展更改为aspx扩展,这是没有问题的,因为这个页面是它唯一能做的事情,响应图像的Response.OutputStream。也就是说,它类似于jpg,但有一个优点,您可以处理其他一些代码

在这个aspx中(在输出图像之前),我们将询问http_referer,如果这个注册表不存在,它将存储在数据表中


例如,如果您想要限制对图像的访问,这非常有用。您可以添加一些逻辑来禁止他们未登录。

您可以将图像扩展名更改为aspx扩展名(),这没有问题,因为此页面是它唯一可以执行的操作,即响应图像的.OutputStream。也就是说,它类似于jpg,但有一个优点,您可以处理其他一些代码

在这个aspx中(在输出图像之前),我们将询问http_referer,如果这个注册表不存在,它将存储在数据表中


例如,如果您想要限制对图像的访问,这非常有用。您可以添加一些逻辑来禁止他们未登录。

您假设a)这是一个网页b)它已被爬网c)它在索引中。这三个选项中的一个或多个很可能是正确的。@Steffu:那么您有没有一个建议的解决方案来处理存储在未知用户硬盘上的随机文件?Oddthinking的答案是一个务实的答案,它将给出一个相当合理的起点。你假设a)它是一个网页b)它被爬网c)它在索引中。这三个选项中的一个或多个很可能是正确的。@Steffu:那么您有没有一个建议的解决方案来处理存储在未知用户硬盘上的随机文件?Oddthinking的答案是务实的,它将