2011-08-01 113 views
4

我創建了一個MCV 3應用並將其部署到我組織中的開發服務器。它在我的開發機器中工作正常。但是,我注意到在開發服務器中,即使我已正確登錄,應用程序也會將我重定向到Account/LogOn?ReturnUrl =%2f網頁。我也看到有時候某些資產(CSS,Javascript,圖片)也沒有提供。我的應用讓我重定向到帳戶/登錄?ReturnUrl =%2f

顯示的錯誤消息如下。刷新頁面後,應用程序工作得很好。如果我稍後不訪問應用程序,則錯誤會再次出現。 任何想法?

'/'應用程序中的服務器錯誤。

無法找到該資源。

描述:HTTP 404.您正在查找的資源(或其中一個 依賴項)可能已被刪除,名稱已更改,或者 暫時不可用。請檢查以下URL並確定 拼寫正確。

請求的URL:/帳號/ LogOn支持

回答

2

解決方法是在IIS中禁用表單身份驗證。

+4

這不是一個解決方案,它是一個解決方法,但不能使用表單身份驗證(不是巨大的損失,但仍然hackish)的代價。有關實際解決方案,請參閱http://stackoverflow.com/a/6304624/120990 – defines

+0

謝謝達斯汀。不過,由於我使用AD進行身份驗證,所以第一種解決方案適用於我。我在一個企業環境中,所有認證都由AD控制。 – Omar

+2

它適合你,但它不是一個正確的「解決方案」的原始問題。由於我不得不四處尋找答案,我只是認爲其他人可能從鏈接中受益:)乾杯! – defines

3

這是相當普遍的。對於資源樣式表等,通常是不使用@ Content.Url的結果。我的猜測是,對於其他問題,您可能會硬編碼您的鏈接,而不是使用@ Url.Action。這很常見,我已經遇到過很多次了。

真的基本上在開發環境中,你並不是真正關心虛擬目錄 - 但是在生產環境中它更像是一個問題。

我會認爲/帳戶/登錄指向使用IIS IIS時的根目錄,您要通過虛擬目錄指向此路由。如果鏈接是通過類似<%= Html.ActionLink%>生成的,那麼你很好。但是,如果您有一些JavaScript,並且您正在調用一個URL,或者如果您將鏈接硬編碼到/ MyController/MyList,那麼它將無法找到它。

與css文件相同。如果你看一下如何創建一個新項目時的site.css文件被訪問,那麼你會看到這樣的內容:

<鏈接的href =」 <%= Url.Content(「〜/ Content.Site .css「)%>' etc ..等。

讓我知道這是否有道理。

+0

我第一次訪問該頁面怎麼樣?當我在瀏覽器中輸入主頁網址時。它要求我提供我的憑據,然後將我重定向到錯誤頁面 – Omar

+0

,這似乎是某種IIS配置。不是嗎? –

+0

這就是我的想法。不知道在哪裏看 – Omar

1

就像ek_ny說的,這是非常普遍的問題。您應該在全球範圍內爲您的應用程序創建這兩個變量。

在後面端的代碼,把這個可以被所有頁面訪問的類:

Public String SiteRootPath = (New Control).ResolveUrl("~/"); 

在前端,放在母版頁文件:

var jvSiteRootPath="<%=SiteRootPath %>"; 

現在,您可以將其用於需要從根路徑引用的所有網址。

2

您可能會看到這一點,因爲你的web.config文件有錯誤的允許角色=「RoleNameHere」

如果您設置webconfig頁這樣下面的角色,確保角色匹配你設置登錄角色爲。例如,您可能寫了Administrators而不是正確的Administrator。一旦你正確地寫入作用下,RETURNURL消失,你可以在登錄後再次訪問該頁面。

<location path="AdminDepartments.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Administrator"/> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
</location> 
0

我想你應該讓您的網站的Anonymous AuthenticationForms Authentication一起。

IIS上選擇您的應用程序,然後在功能視圖中選擇驗證。

相關問題