2009-08-19 57 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

相關問題