Asp.net mvc 4 MVC4 Intranet站点IIS 7,无法显示该网页

Asp.net mvc 4 MVC4 Intranet站点IIS 7,无法显示该网页,asp.net-mvc-4,iis,deployment,intranet,Asp.net Mvc 4,Iis,Deployment,Intranet,我已经做了好几个小时了,仍然没有弄清楚我做错了什么。我创建了一个MVC4内部网站,现在我准备将其部署到web服务器上的IIS。我设置了一个名为Portal的站点,并在VisualStudio中使用文件系统方法执行了单击发布。文件已成功复制到我的网站。在IIS中,我将身份验证更改为Windows,并禁用了匿名身份验证。我甚至进入我的应用程序池,更改了Load User Profile=true(不确定是否需要这样做)。然后我点击*:88上的浏览门户,收到Internet Explorer无法显示网

我已经做了好几个小时了,仍然没有弄清楚我做错了什么。我创建了一个MVC4内部网站,现在我准备将其部署到web服务器上的IIS。我设置了一个名为Portal的站点,并在VisualStudio中使用文件系统方法执行了单击发布。文件已成功复制到我的网站。在IIS中,我将身份验证更改为Windows,并禁用了匿名身份验证。我甚至进入我的应用程序池,更改了Load User Profile=true(不确定是否需要这样做)。然后我点击*:88上的浏览门户,收到Internet Explorer无法显示网页的消息。我检查了我的模块,发现UrlRoutingModule-4.0得到了管理和继承。我必须忽略一个明显的设置,因为这是我的第一个网站。感谢您的帮助。多谢各位

    physical path = c:\inetpub\wwwroot\Portal
    Site name and Application Pool = Portal (.Net 4 and Pipeline mode: integrated)
    type = http
    Host name = Portal
    Port = 88 (80 was already used and did not work)
    IP Address = *
更新:Webconfig(我有自定义角色)和Routconfig

<system.web>

    <roleManager enabled="true" defaultProvider="DbRoleProvider">
      <providers>
        <clear />
        <add name="DbRoleProvider"
            applicationName="Portal"
            type="Portal.WebUI.Infrastructure.DbRoleProvider"
            connectionStringName="PortalEntities" />
      </providers>
    </roleManager>

    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  <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></system.webServer>

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

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

公共静态无效注册表项(路由收集路由)
{
routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
routes.MapRoute(
名称:“默认”,
url:“{controller}/{action}/{id}”,
默认值:新建{controller=“RequestInfo”,action=“Index”,id=urlparmeter.Optional}
);
}

如果您在IE中禁用友好的错误消息,将非常有用。在“高级”选项卡的“Internet选项”中,在“浏览”下,取消选择“显示友好的HTTP错误消息”。然后再试一次。希望您将看到HTTP状态代码的实际问题。难道它找不到服务器,你得到的是404(找不到页面)、401、500等等


有了这些信息,诊断起来就容易多了。

所以经过更多的实验和研究,我发现了我的问题,这是以前从未这样做的结果

  • 我的第一个问题是在设置应用程序时包含了主机名。因此,当我试图在服务器上浏览
    www.portal.com:85
    时,它不理解该地址,无法连接到任何东西。但是,当我删除主机名并键入
    http://localhost:85
    它成功了。我将不得不与我的基础设施团队合作来设置它

  • 我的第二个问题是SQL Server的安全性。我不知道我必须为应用程序池名称设置登录名。我使用了这篇文章的第二个答案,因为我不想将标识更改为LocalSystem。一旦我在SQL Server安全设置下设置了登录,该站点就可以正常运行了。这是正确的做法吗


  • 应用程序池配置为哪个用户?该用户是否有权访问代码上载到的本地文件路径?我已通过身份验证设置,池设置为ApplicationPoolIdentity域用户是否有权访问?当你请求你的站点时,你能显示你的路由配置/web.config(相关的身份验证部分)和http输出吗(例如:后台是否发生了重定向?)?你和服务器之间有防火墙吗?我把端口改回了80以返回我的步骤。此错误可能来自我的站点?万维网发布服务(WWW服务)未为站点2注册URL前缀http://*:80/。必要的网络绑定可能已经在使用中。该站点已被禁用。数据字段包含错误号。把它改回88没什么,我肯定是出了什么问题,我说了,但我得到了同样的信息,没有显示网页。当我在IIS上单击浏览时,它试图将我带到该站点)(使用80,我只得到“”,但这也不起作用,因此它无法识别我的配置文件中的某些内容,我猜这可能是DNS问题。“门户”是否在服务器上解析任何内容?您可能必须编辑该框上的主机。不应该,我将其更改为RequestPortal,并收到相同的错误。我想我要问的是,您访问站点时使用的url。http://:88/RequestPortal/index?或者是吗?。在第二种情况下,您必须确保“portal”解析为正确的IPI将在我回到办公桌时查看。我在VIsual Studio 2010上手动安装了MVC4。我不必像MVC3那样部署依赖项,对吗?