我们为图像(jpg)创建一个唯一命名的请求,我们需要重定向它并收集其请求的名称。我们尝试在Global.asax中执行此操作,它在Dev中运行良好,但在生产中它似乎不会触发。
它必须是一个图像(请求以jpg结尾)或我们之间的某些处理器,客户端将剥离请求。这在一个虚拟目录中运行,除了这些图像请求之外,它只做很少的事情。 MVC不是一种选择。
Ex. request = domain/Copyright_123456789.jpg
response = domain/images/Copyright.jpg
collect = 123456789 and place in database
代码
void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.AppRelativeCurrentExecutionFilePath.Contains("Copyright_") && Request.AppRelativeCurrentExecutionFilePath.Contains(".jpg"))
{
int ADFID = 0;
string[] ImageNameArray = Request.AppRelativeCurrentExecutionFilePath.Split(new char[] { '_', '.' });
if (int.TryParse(ImageNameArray[1], out ADFID))
{
QueriesTableAdapter SaveView = new QueriesTableAdapter();
SaveView.FirstQuote_Operations_ClientLeadEmailViews_Save(ADFID);
}
HttpContext.Current.RewritePath("~/images/Copyright.jpg");
}
}
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
以下是我如何实现这一目标。图片src =“website / this virtual directory / Copyright_12345.jpg” 12345是我们收集的价值,我们在网站上以真实的jpg回复
web.config
<httpHandlers>
<remove verb="*" path="*.jpg"/>
<add verb="*" path="*.jpg" type="Tracker.TrackerClass" validate="false"/>
</httpHandlers>
跟踪器类
public class TrackerClass : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
int ADFID = 0;
string[] ImageNameArray = context.Request.AppRelativeCurrentExecutionFilePath.Split(new char[] { '_', '.' });
if (int.TryParse(ImageNameArray[1], out ADFID))
{
**store to database***
}
context.Response.ContentType = "image/jpg";
context.Response.WriteFile("images/Copyright.jpg");
}
public bool IsReusable
{
get
{
return false;
}
}
这是网站上唯一的课程。在IIS中创建虚拟目录以使其生效 创建后,获取属性,虚拟目录,配置,映射。在Application Extensions下,单击Add。输入.jgp,您的.NET版本isapii(从窗口中的大多数其他扩展名复制它),并将Verb设置为All。请务必取消底部的验证文件。
应该这样做。
答案 1 :(得分:0)
这似乎是一种奇怪的方式来处理事情....我建议使用ASP.NET MVC,因为它在路由方面具有很好的灵活性....检查每个请求似乎都不是很好。
答案 2 :(得分:0)
您是否尝试过creating a handler页并将其视为jpg?您是否能够在查询字符串中传递任何信息?
public void ProcessRequest (HttpContext context)
{
if (context.Request.QueryString["copyright"] == "y")
{
context.Response.ContentType = "image/jpg";
context.Response.WriteFile("~/Flower1.jpg");
}
}