我已经在这里工作了几个小时,但仍然没有弄清楚我做错了什么。我创建了一个MVC4内部网站点,现在我准备将它部署到我们的Web服务器上的IIS中。我设置了一个名为Portal的站点,从Visual Studio我使用文件系统方法执行了1次单击发布。文件已成功复制到我的网站。在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 }
);
}
答案 0 :(得分:1)
所以经过更多的实验和研究后,我发现了我的问题,这是以前从未这样做过的结果。
我的第一个问题是我在设置应用程序时包含了一个主机名。因此,当我尝试浏览服务器上的www.portal.com:85
时,它不理解该地址,无法连接到任何地址。但是,当我删除主机名并输入http://localhost:85
时,它才起作用。我将不得不与我的基础架构团队一起设置。
我的第二个问题是我们的SQL Server的安全性。我不知道我必须为应用程序池名称设置登录。我使用了这篇文章Login failed for user 'IIS APPPOOL\ASP.NET v4.0'中的第二个答案,因为我不想将身份更改为LocalSystem。在SQL Server安全性下设置登录后,该站点正在运行。这是正确的做法吗?
答案 1 :(得分:0)
如果您在IE中禁用友好的错误消息会很有帮助。在“高级”选项卡上的“Internet选项”中,在“浏览”下取消选择“显示友好HTTP错误消息”。然后再试一次。希望您会看到实际问题是HTTP状态代码。难道它找不到服务器,你得到404(未找到页面),401未经授权,500等等。
通过这些信息,诊断起来会容易得多。