2011-12-15 33 views
0

我在vs2010中創建了一個空的mvc項目,並創建了一個視圖(MessageView),一個控制器和一個模型。出於某種原因,當我建立我的應用程序(已設置我的觀點作爲起始頁),這似乎拋出一個404錯誤並追加下面的網址:經調查我的web.config文件,我可以Visual Studio 2010 //.NET MVC應用程序 - 404空白項目上的錯誤

http://localhost/MvcApplication1/**Account/LogOn?ReturnUrl=%2fMvcApplication1%2fViews%2fMessageView.aspx** 

看到下面的一段代碼:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

這已經被自動添加....不完全知道爲什麼考慮到我點擊空MVC項目。任何人都知道這個固定的乾淨的方式....

編輯

解決:問題是,我感動到消息查看由.NET放在那裏views子目錄。我不得不將該視圖放在項目目錄的根目錄下,以便它能夠找到並顯示它。我還必須從web.config文件中刪除上面的代碼。

你怎麼能得到這個當它被放在一個子目錄中工作

+0

雖然我很欣賞你找到了正確的方式來訪問你的URL,但它不會沒有禁用或修復FormsAuthentication工作。將此標記爲已解決但未添加已刪除或修復配置的事實顯示了不正確的解決方案,其中有兩個部分。請相應地編輯您的帖子。 – ChrisBint 2011-12-15 16:56:21

回答

1

就在網絡選項卡上的默認值當前頁面改變你的項目的屬性開始行動值到別的東西。

+0

+1。我們通常將我們的設置爲「不要打開頁面」。但是,您可以使用特定頁面。但是頁面應該映射到與您的CONTROLLER和ACTION名稱相匹配的ROUTE,而不是VIEW文件。 – danludwig 2011-12-15 16:25:50

+0

@olivehour:是的,*當前頁*是網頁時代的遺蹟:) – Jan 2011-12-15 16:29:20

+0

確定已完成,但仍無法正常工作。錯誤404查找資源.... – user559142 2011-12-15 16:34:43

1

你不想訪問視圖,你想訪問控制器。這不是一個錯誤,它是MVC的工作原理。您的網址應該是:

http://localhost/MvcApplication1/ControllerName

http://localhost/MvcApplication1/Views/MessageView.aspx

更新

這裏是發生了什麼。你從一個空白的項目開始。這意味着您沒有帳戶控制器。

MVC不允許Web服務器在/ Views(/Views/Whatever.aspx)中公開您的原始視圖文件。當您嘗試訪問它時,會導致返回一個403禁止標題。

ASP.NET通過重定向到/ Account/LogOn - AccountController的LogOn操作方法來處理403。既然你有一個空白的項目,並沒有的AccountController,這是什麼原因造成的404

另一個更新

剛剛看了你解決。再次,您無法訪問視圖,控制器或模型文件夾中的文件。這些是MVC使用的特殊文件夾。

如果要訪問子目錄中的視圖,請創建一個像/ content或/ scripts的子目錄。 MVC將它們視爲普通文件夾,並且您可以從它們訪問任何您想要的內容。所以,你可以把文件放在這樣的文件夾中:

/SubdirectoryAbc/MessageView.aspx。

然後您應該可以使用URL http://localhost/MvcApplication1/SubdirectoryAbc/MessageView.aspx訪問此文件。

但是,您將無法在控制器操作方法中使用該視圖。

-1

您可以刪除整個部分;

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

這將禁用默認情況下使用MVC放置到網站上的身份驗證。

0

問題在於MVC由於其路由而使用約定來實現文件結構。如果要將視圖移動到另一個文件夾,則需要自定義路由代碼才能正確映射到文件夾結構。老實說,我認爲這不值得你花時間。