在Server 2012和IIS 8上部署ASP.Net MVC时获得404

时间:2014-04-12 05:05:05

标签: c# asp.net-mvc asp.net-mvc-4 iis windows-server-2012

我已经尝试过我可以在网上找到的所有解决方案,但没有一个可以使用。

我在服务器上添加了asp.net 4.5和3.5角色。

我将runAllManagedModulesForAllRequests添加到web.config

我从asp.net网站安装了MVC。我不确定还需要设置什么。

这是web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Redacted" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <customErrors mode="Off" />
    <machineKey validationKey="96820F5717A865002768570C77EC72BBBC16CD2BDBC3D6BD494F4F4734F903FEBDA99E0A694ADB5B2A6D9347FB60BE00F1BF618062DA36C8A378B0B274B80390" decryptionKey="71AA018320CA48F100A58E38285B3AEE7C2E21001C1ASDD1" validation="SHA1" />
    <authentication mode="None" />
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <pages>
      <namespaces>
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="FormsAuthenticationModule" />
    </modules>
        <defaultDocument>
            <files>
                <clear />
                <add value="default.aspx" />
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="index.htm" />
                <add value="index.html" />
                <add value="iisstart.htm" />
            </files>
        </defaultDocument>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

6 个答案:

答案 0 :(得分:1)

在不知道发布404(可能是IIS或ASP.NET)的组件的情况下,我首先想到的是.net没有在IIS注册,至少不是最新版本。如果IIS抛出404,它将看起来像这样:http://imgur.com/7crGkNg

如果ASP.NET工作正常,404将如下所示:http://imgur.com/MIVYSNv

如果从IIS获取404,请尝试重新运行aspnet_regiis.exe -i。在我的Windows 8系统上,路径位于:&#34; C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe&#34;

此处有更多详情:http://msdn.microsoft.com/en-us/library/k6h9cz8h(v=vs.100).aspx

答案 1 :(得分:1)

在Windows 8上默认情况下,IIS不会安装ASP.NET,因此请转到&#34;打开/关闭Windows功能&#34;在IIS下检查 - &gt;万维网服务 - &gt;应用程序开发特征 - &gt; ASP.NET 4.5

这对我有用。

答案 2 :(得分:0)

基本听起来,如果package com.example.bracketapp; import java.util.ArrayList; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.ArrayAdapter; import android.widget.ListView; import android.app.ListActivity; public class MainActivity extends ListActivity { public static ArrayList<Player> players = new ArrayList(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); players.add( new Player() ); players.add( new Player() ); this.setListAdapter(new ArrayAdapter<Player>( this, R.layout.player_row, R.id.textView1, )); } public void createPlayer() { players.add( new Player() ); } } 和IIS目录权限无法解决您的问题...请尝试完全擦除并重新部署网站。

答案 3 :(得分:0)

我必须为IIS安装“IIS客户端证书映射身份验证”角色服务才能清除此错误。我的站点配置了客户端证书身份验证。

答案 4 :(得分:0)

我遇到了和你描述的问题相同的问题。我在不同的资源上搜索了很长时间,并尽我所能。但解决方案很简单......

我打开了Global.asax.cs,将代码放在方法&#34; Application_Start(object sender,EventArgs e)&#34;在try_catch块中。然后我将我的项目附加到w3wp.exe并在Global.asax.cs中放置一个断点。我重新构建了webApp并尝试从浏览器调用我的网站。当我点击断点时,我按下F5并在我的Catch块中收到错误消息。

我的问题是在一些缺少的dll中,尽管该项目将在没有任何警告或错误的情况下构建。另外,我有一个对NPGSQL的引用,以及一些我的其他dll,它引用了NPGSQL。 WebApp中的NPGSQL版本与我的其他dll中的版本不同。所以这也引起了问题。

尝试调试Web应用程序的开头,希望它能为您提供帮助。

答案 5 :(得分:0)

检查IIS中的网站绑定。确保您没有绑定到可能正在使用的系统端口或其他端口,从而导致冲突。通常,编号较高的端口不太可能使用。

端口#分配列表:

https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml