【问题标题】:Using a query string in an excel hyperlink to an ASP.Net Web Application在指向 ASP.Net Web 应用程序的 Excel 超链接中使用查询字符串
【发布时间】:2010-11-20 22:35:31
【问题描述】:

我想在现有的 excel 应用程序和现有的 ASP.Net VB Webforms 应用程序之间传递一些数据。

我认为带有一些查询字符串变量的超链接是最直接的方法。但是,似乎超链接没有保留登录用户的会话。

在网页上使用相同的 URL 进行测试确实有效。因此,Excel 似乎正在开始一个新会话。关于如何使 Excel 超链接的行为与浏览器超链接相同的任何想法?

【问题讨论】:

    标签: asp.net vb.net excel session hyperlink


    【解决方案1】:

    我也遇到了同样的问题,使用 Fiddler 我可以看到,当点击 Excel 中的链接时,cookie 没有被发送到服务器 - 导致会话问题。

    我的解决方法如下;创建一个不需要有效会话的重定向页面,它只重定向到需要有效会话的页面。由于重定向页面位于浏览器中 - 重定向到的页面按预期获取会话 cookie。

    代码(redirect.htm);

    <html>
    <body>
    Please wait, loading your page... 
    <script type="text/javascript">
    <!--
    function getQuerystring(key) {
    key = key.replace(/[\[]/,"\\\[").replace(/    [\]]/,"\\\]");
    var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
    var query = regex.exec(window.location.href);
    return query[1];
    }
    
    window.location = "http://site-page/" + getQuerystring('page'); //-->
    </script>
    </body>
    </html>
    

    使用http://site-page/redirect.htm?page=this-sub-page 访问该页面 - 现在对我有用。

    【讨论】:

      【解决方案2】:

      我在使用 Firefox 作为我的默认浏览器时偶然发现了这个问题。如果我将 IE 设置为默认设置,问题就会消失。这可能对您的情况没有帮助,但它是一种解决方法。

      我还发现了导致问题的原因。 Excel 在将 url 传递给默认浏览器之前使用 IE7 请求页面本身。

      这是来自我们服务器日志的 sn-p:

      "GET /ar/vehicle.php?rv_id=9046 HTTP/1.1" 302 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1 ...
      "GET / HTTP/1.1" 302 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1 ...
      "GET /?q=node/57 HTTP/1.1" 200 6231 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1 ...
      "GET /?q=node/57 HTTP/1.1" 200 8318 "-" "Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0 ...
      

      前三行是 Excel 发送请求和处理重定向。最后一行是传递给默认浏览器的内容。

      加布里埃尔

      【讨论】:

        【解决方案3】:

        单击 Excel 中的链接通常会打开一个新浏览器,从而打开一个新会话。您无法在 Excel 或超链接中真正做些什么来缓解这种情况 - 这是浏览器会话的工作方式。

        如果您不能在用户访问此 url 时重新初始化用户的会话状态(我假设他们可能会被要求登录等),那么也许您可以考虑使用 cookie 来保留用户的身份?

        【讨论】:

        • 是的,它需要登录。我还没有深入研究应用程序的那一侧,我可以自己启动一个新的浏览器窗口或选项卡而不需要登录(当已经登录时),这似乎很奇怪,但如果我从 Excel 执行它就不会t 似乎可以访问我认为是存储在机器上的 cookie。我不想挖掘文件系统来打开一个cookie,只是为了复制这个cookie供excel使用。在我看来,它不像浏览器会话的工作方式,而是更多关于 Excel 的工作方式
        【解决方案4】:

        旧帖子,但我遇到了同样的问题

        这是我修复它的方法。

        我将超链接指向一个检查浏览器用户代理的 php 脚本,如果它包含术语“ms-office”,则什么都不做,否则将其重定向到真实页面!

        这是我得到的:

        if (strpos($_SERVER['HTTP_USER_AGENT'],'ms-office') === false) {
            header("Location: ".$_GET['url']);
        }
        

        只需将 excel 发送到例如redirect.php?url=http://google.com

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多