IIS 网站阻止 Internet 连接

IIS 网站阻止 Internet 连接

我已经与这个问题斗争了一段时间。

当我的 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 的所有互联网访问。不是应用程序访问互联网,而是所有互联网接入从那台电脑。

我们花了两天时间解决这个问题。

我希望这可以帮助别人。

相关内容