我已经与这个问题斗争了一段时间。
当我的 ASP.NET MVC4 网站开始在本地安装的 IIS(在端口 8081 上运行)上提供服务时,不是 80!),互联网连接被阻止。就是这样。
我很困惑,因为真的很奇怪。它的行为如下:
- 当网站首次启动时,我可以浏览任何网站
- 仅当提供第一个页面时,连接才会失败
- 事后停止网站也无济于事
- 随后停止 IIS 服务器也无济于事(!)
- 连接问题也会影响 ping
- 当我执行登录/注销或重新启动计算机时,连接恢复
- 通过查看跟踪,我看不到任何被 Windows 防火墙阻止的内容
- 编辑:关闭 Windows 防火墙后,一切正常
我尝试将绑定从 localhost:8081 更改为 {我的 IP 地址}:8081,但没有帮助。有什么线索吗?
编辑
仅供参考,这是我的 web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<section name="plisani.medo" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<connectionStrings configSource="connectionStrings.config" />
<location path="Account">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="Content">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="log4net.Internal.Debug" value="true" />
<add key="MvcSiteMapProvider_UseExternalDIContainer" value="true" />
<add key="MvcSiteMapProvider_SiteMapFileName" value="~/Mvc.sitemap" />
<add key="MvcSiteMapProvider_IncludeAssembliesForScan" value="GeomarketingWeb" />
</appSettings>
<plisani.medo>
<add key="zeko1" value="MYDOMAIN\xxxxxxxxxxxxxxxx" />
<add key="zeko2" value="xxxxxxxxxxxxxxxx" />
</plisani.medo>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Logs\log4netDebug.txt" />
</listeners>
</trace>
</system.diagnostics>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<sessionState cookieName=".tempsession"
cookieless="UseCookies"
regenerateExpiredSessionId="true"
mode="Custom"
customProvider="SessionProvider">
<providers>
<add name="SessionProvider"
type="GeomarketingWeb.Providers.SessionProvider"
connectionStringName="GMDB" />
</providers>
</sessionState>
<authentication mode="Forms">
<forms loginUrl="~/Account/Logon"
name=".GMAUTH"
timeout="1440"
defaultUrl="~/Home/Index"
slidingExpiration="true" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<membership defaultProvider="GeomarketingMembershipProvider">
<providers>
<clear />
<add name="GeomarketingMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="GMAD"
attributeMapUsername="sAMAccountName"
connectionUsername=""
connectionPassword=""
connectionProtection="Secure"
enablePasswordReset="false"
enableSearchMethods="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
applicationName="Geomarketing" />
</providers>
</membership>
<roleManager defaultProvider="GeomarketingRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".GMROLES" cookieTimeout="5" cookiePath="/" cookieSlidingExpiration="true">
<providers>
<clear />
<add name="GeomarketingRoleProvider" type="GeomarketingWeb.Providers.RoleProvider" connectionStringName="GMDB" applicationName="Geomarketing" />
</providers>
</roleManager>
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add name="DefaultProfileProvider"
type="System.Web.Providers.DefaultProfileProvider"
connectionStringName="DefaultConnection"
applicationname="Geomarketing" />
</providers>
</profile>
<pages controlRenderingCompatibilityVersion="4.0">
<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" />
<add namespace="MvcSiteMapProvider.Web.Html" />
<add namespace="MvcSiteMapProvider.Web.Html.Models" />
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="true" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="*"
type="System.Web.Handlers.TransferRequestHandler"
resourceType="Unspecified"
requireAccess="Script"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</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-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
答案1
解决了。
我简直不敢相信它是这样工作的,而且我不知道这种混乱的实现和/或网络细节,但这里是解决方案:
- 我发现,当应用程序在应用程序池标识凭据下运行时,工作站上的互联网是可以访问的
- 当应用程序以我自己的凭据运行时它也能正常工作
- 仅当应用程序在具有互联网访问限制的特殊服务凭证下运行时,连接才会失败
一名系统工程师发现,如果应用程序以此类服务凭据运行,Palo Alto 防火墙会阻止运行 IIS(和应用程序)的 PC 的所有互联网访问。不是应用程序访问互联网,而是所有互联网接入从那台电脑。
我们花了两天时间解决这个问题。
我希望这可以帮助别人。