链接在Excel中会导致重复的调用

问题的背景

在我的ASP.net MVC4networking应用程序中,我们允许用户在Excel工作簿中下载数据,其中一个单元格包含指向报告页面的超链接。 我们准备链接,当用户点击Excel中的链接时, ReportController被参数调用,处理请求并返回一个报告摘要视图,即.cshtml页面。 一切正常…

我使用SpreadSheetGear生成链接的代码片段生成Excel:

 rrid = (int.TryParse((string) values[row][column], out outInt) ? outInt : 0); worksheet.Hyperlinks.Add(worksheet.Cells[row + 1, column], PrepareProspectProfileLink((int) rrid, downloadCode), string.Empty, "CTRL + click to follow link", rrid.ToString(CultureInfo.InvariantCulture)); 

问题

我只注意到,当我点击链接在Excel中,相同的请求被发送到Web服务器两次。

分析

我使用Fiddler进行了检查,并在应用程序代码中放置了一个断点,并确认请求确实发送了两次。

在提琴手,在进程栏下,我发现第一个请求来自“excel:24408”,第二个请求来自“chrome:4028”。

另外,如果我在Outlook中复制粘贴链接,它只调用一次请求。

我明白这一点,第一个请求是由excel调用的,当excel与html服务时,它不知道如何呈现它,因此将请求切换到我的系统上的默认网页浏览器。 现在,Chrome会触发相同的请求,并在接收HTML时打开HTML页面。

我怎样才能阻止这种行为? 它会给Web服务器带来不必要的负担。 其次,当我审计用户行为,我得到两个条目:(

我不知道有关的Excel,但你可以在Web服务器上处理这个奇怪的行为。 你可以创buildhtml页面(不需要审计),使用javascript将用户redirect到带有真实报告(和审计内容)的页面。

如果你只是关心审计,你可以跟踪caching(或数据库)中的报告请求,并考虑只有在相同的报告请求没有被解雇的情况下进行审计input,比如5秒钟之前。