2012-11-15 38 views
16

我有一個.otf字體在/ images文件夾中的MVC 4應用程序。它的工作原理我的桌面上,但是當我部署到Azure,我得到一個404試圖訪問時/images/myfont.otf.OTF字體沒有部署到Azure

的字體已經具備了生成操作屬性設置爲「內容」

我怎樣才能迫使Azure選擇這個?

+1

您可以通過提取** cspkg **文件(這是上傳到Azure的內容)來確認文件是否被複制,您可以在'X:\ Solution \ AzureProject \ bin \ ConfigName \ app.publish中找到它\ AzureProject.cspkg'您需要解壓縮ASP.NET項目,然後檢查sitesroot下的Content文件夾。 –

回答

2

HTTP錯誤404表示在服務器上找不到內容。這確實意味着當您將應用程序部署到Windows Azure時,內容不在包中。

正如您在上面建議的那樣,您將.OTF設置爲內容,這意味着您要求編譯器將其視爲靜態文件並且不構建它,但是特定文件不會被複制到最終輸出文件夾中最終CSPKG的一部分。您需要將「複製到輸出目錄」設置爲「始終複製」,以便它可以成爲CSPKG的一部分並部署到Azure雲服務。

正確設置文件屬性並構建應用程序後,您可以手動訪問輸出文件夾,以便通過解壓縮來驗證該文件是否存在以及CSPKG。

enter image description here

+2

這可能不是問題。字體文件與說圖像沒什麼區別,你不需要爲這些文件改變任何屬性。看到我的答案更可能的原因。 – MEMark

4

地點:

<system.webServer>  
    <staticContent> 
     <remove fileExtension=".otf" /> 
     <mimeMap fileExtension=".otf" mimeType="font/otf" /> 
    </staticContent> 
</system.webServer> 
-1

我最好的選擇是你有你的CSS中的字體文件的相對路徑。

你是否得到403禁止?這可能表明您的文件路徑已關閉。

嘗試從../filename.otf改變你的路徑類似/Styles/filename.otf(或其他路徑)

0

,我的問題是,這些文件並沒有包含在項目。它們位於正確的文件路徑((project)/Content/fonts/*)中,但未被視爲項目的一部分(即由*.csproj文件引用)。解決方案是右鍵單擊字體文件夾並選擇Include in Project選項。