2014-02-16 83 views
1

如何在Application_Start期間確定給定的虛擬路徑在域內?確定路徑是否跨域

// Cross domain virtual path 
"//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" 

// In app domain virtual path 
"~/scripts/jquery/1.11.0/jquery.min.js" is not. 

編輯:

我可以也許只是用

VirtualPathUtility.IsRelative()

回答

2

不知道你正在嘗試做的,但你可以測試,看看文件是居然還有:

if (File.Exists(Server.MapPath(path))) 
{ 
    //file is on the server 
} 

UPDATE:在回答你的問題,如果你可以使用VirtualPathUtility.IsRelative():是的,你可以。每個MSDN

返回一個布爾值,指示指定的虛擬路徑 是否相對於應用程序。

與我上面顯示的區別是File.Exists將會返回false,如果該文件實際上不存在。 VirtualPathUtility.IsRelative()將針對相對路徑(無論文件是否存在)返回true。

你使用什麼取決於你正在努力完成什麼,這不是很清楚。

+0

我認爲回答你自己的問題是可以的,但是我一定是做錯了,因爲它被刪除了。我應該把你的標記作爲正確的答案嗎? – GoClimbColorado

+0

是的,您可以回答自己的問題。我想你發佈的內容只是問了一個新問題,並沒有回答你現在的問題。我認爲你提出的問題是一個很好的問題,應該問。至於接受答案,這是由你來決定什麼答案最能解決你的問題 – MikeSmithDev

+0

我最終使用了VirtualPathUtility,因爲@MikeSmithDev爲我驗證了。謝謝! – GoClimbColorado

0

你不能。

因爲存在的Application_Start

在應用程序啓動之前被的Application_Start觸發頁面處理和發送任何HTML尤其是前期間沒有路徑。

順便說一句,你所談論的路徑是並且必須是HTML輸出的一部分......這是在視圖....這是非常非常非常非常非常早的處理。

爲此,您首先需要確定需要運行控件的視圖,該控件需要分析和路由需要啓動應用程序的請求 - 最後一部分是您想知道輸出的位置。

+0

我在說的路徑是在代碼中提供的......即。 StyleBundle/ScriptBundle – GoClimbColorado

+0

@GoClimbColorado嗯,它是你的代碼。我猜你知道你在那裏編碼的路徑是什麼,以及它是否是相對的。添加一些關於你想要捆綁的細節可能有助於解決問題。 – MikeSmithDev

+0

那麼?發佈App_Start會遍歷所有腳本捆綁並獲取文件,並檢查它們是否以正確的字符串開頭。你嘗試過嗎? – TomTom