簡體   English   中英

在IIS中為mvc4網站/應用程序設置主頁(無格式no.aspx)

[英]setting homepage in IIS for mvc4 website /application (no forms no.aspx)

碰巧的是,我花了很長時間解決設置問題,現在我已經設置了mvc4(從WebForms移出)和vs2010。

部署到IIS(7 v7.5)后,除非指定視圖的完整路徑,否則無法加載項目。 除了放置靜態的html或aspx頁面

如何使其重定向到[MyFirstControl] / [MyFirstView]

缺少主人嗎? 選擇網站與WebApplication之間是否存在問題?

我已經將Ip連接到一個域名,在FW中打開了iis的端口,而我想要的是能夠通過其域名進入站點/應用程序,而不必撥入Control +視圖。 那我該怎么辦?

順便說一句,我正在使用基本模板,因為我需要最少的代碼量,並且它是按定義定義的網站還是Web應用程序,實際上,作為.NET中的程序員,它確實很重要嗎?一個業務層和數據庫..但我不理解名稱/術語上的區別

編輯

我已經搜索了很長時間,試圖把它弄對

 <modules>
      <remove name="UrlRoutingModule-4.0" />
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>


public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
 }

您只注冊了一條路由(在新的MVC項目中創建的默認路由):

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

URL中沒有任何動作或沒有控制器時, defaults參數將提供默認值。 因此,當您導航到根( / )時,將在HomeController上執行Index操作。

顯然,您希望根( / )指向MyFirstControl控制器上的MyFirstView操作,因此原則上您只需要更改defaults參數的defaults 但是,您的控制器類以Control結尾,但是MVC希望它以Controller結尾,因此您必須將控制器類重命名為MyFirstController ,然后配置此默認路由:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "MyFirst", action = "MyFirstView", id = UrlParameter.Optional }
);

另外,在動作名稱中使用View會造成一些混亂。

ASP.NET中的路由是一個非常重要的概念,您可以通過閱讀文章ASP.NET Routing了解更多信息。

我太忙了,沒有注意到在對所有必需的設置進行故障排除后,我忘記確保我將所有測試重設為將控件從索引重命名為home並將視圖從默認重命名為index時,或者在某種程度上,僅在上述代碼中我添加了修改。 我做了最后一眼只是為了確定,但這實際上是我的錯誤,因此我將其留作以后參考,以便其他人可以從該錯誤中學習。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM