2009-08-19 37 views
3

我想在现有的Excel应用程序和现有的ASP.Net VB Webforms应用程序之间传递一些数据。在Excel超链接中使用查询字符串到ASP.Net Web应用程序

我认为超链接与一些查询字符串变量将是最直接的方式做到这一点。但是,超链接似乎不保留登录用户的会话。

使用网页上的相同URL测试此功能确实有效。所以看起来Excel正在开始一个新的会话。有关如何制作Excel超链接的任何想法与浏览器超链接的行为方式相同?

回答

0

单击Excel中的链接通常会打开一个新的浏览器,从而创建一个新的会话。在Excel或超链接中无法真正做到减轻这一点 - 这正是浏览器会话的工作方式。

如果您不能只是当他们访问此网址(我想他们可能会被要求登录等),那么也许你可以考虑使用Cookie来保留用户的身份重新初始化用户的会话状态?

+1

是的它需要登录。我还没有深入到应用程序的那一面,这似乎很奇怪,我可以自己启动一个新的浏览器窗口或标签,而不需要登录(当已经登录时),但是如果我从Excel中执行它, t似乎有权访问我所认为的存储在机器上的cookie。我不想深入文件系统来打开一个cookie,只是为了复制这个cookie供excel使用。在我看来,并不像浏览器会话的工作方式,而是关于Excel如何工作的更多信息 – 2009-08-19 13:55:14

5

我有这个相同的问题,并使用提琴手我可以看到,当在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从访问访问页面 - 现在适用于我。

1

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

我也找出了导致问题的原因。在将URL传递到默认浏览器之前,Excel使用IE7请求页面本身。

这是从我们的服务器日志中的一个片段:

"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的发送请求和处理重定向。最后一行是传递给默认浏览器的内容。

加布里埃尔

0

老的文章,但我有同样的问题

这里就是我的固定它。

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

这里是我的本钱:

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

只需发送Excel来如redirect.php?url = http://google.com

相关问题