【问题标题】:Why is /eurl.axd/Gibberish being tacked onto the end of my pages?为什么 /eurl.axd/Gibberish 被添加到我的页面末尾?
【发布时间】:2012-01-24 16:44:54
【问题描述】:

我一直在努力将我们的网站移至公共测试版服务器,在我们配置 IIS 以匹配内部测试服务器后,我注意到了这个问题。该应用程序仍然可以工作,但最后却出现了这些丑陋的东西。

是什么导致这个显示?我已经设置了 ISAPI 过滤器,并为 aspnet_isapi.dll 添加了一个通配符。

更新。

我在测试服务器上完全删除并重新创建了我的网站,以验证网址的外观。

在重新创建站点以匹配 beta 后,我的测试服务器不会在 url 中显示任何 eurl.axd/gibberish。

这里是配置的快速概览

IIS6/Windows 2003/Helicon Isapi 重写运行。

网站 |
|
+-----------dr405

据我所知。 beta 正好反映了这一点。但是,假设它没有。什么变化可能导致问题?

由于该站点在一台服务器上运行,而不是在另一台服务器上运行,我不希望有任何涉及修改我的应用程序、编辑我的 .htaccess 文件等的解决方案......

Web.config system.web 部分

    <customErrors mode="Off"/>
    <httpRuntime maxRequestLength="1000000000" />
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
      <buildProviders>
        <add extension=".cshtml" type="System.Web.WebPages.Razor.RazorBuildProvider, System.Web.WebPages.Razor" />
      </buildProviders>
    </compilation>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="90000" />
    </authentication>
    <membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <profile enabled="true" defaultProvider="dr405ProfileProvider" inherits="Tangible.Profiles.DR405Profile">
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="dr405ProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
    </profile>
    <roleManager enabled="true">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>
    <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.Routing" />
        <add namespace="System.Web.WebPages" />
        <add namespace="System.Data" />
      </namespaces>
    </pages>
  </system.web>

更新 2

对不起,如果我让任何人感到困惑。我有一个集成的测试服务器。不向公众公开。该网站在那里正常工作。面向外部的 beta 服务器是我遇到问题的地方。生产服务器甚至还不是所有这些因素。

更新 3

这是我的 .htaccess 文件。我仍然认为这不需要任何修改,因为此文件和应用程序在我的集成测试服务器上正常运行。

大部分文件的目的是修复一些非常丑陋的网址,并自动将用户指向移动的内容。没有规则适用于我遇到问题的应用程序。

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} (www.sarasotaproperty.net|www.sc-pa.net|sc-pa.net|sarasotaproperty.net) [nc]
RewriteRule ^(.*)$ http://www.sc-pa.com/$1 [R=301,NC,QSA]

RewriteMap  lc int:tolower

RewriteCond %{REQUEST_URI} [A-Z]
RewriteCond %{REQUEST_URI} !.*(js|css|inc|jpg|gif|png)
RewriteRule (.*) ${lc:$1} [R=301]


RewriteCond %{REQUEST_URI} !.*(web_content/pdf/).*
RewriteCond %{SCRIPT_FILENAME} !-d   
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule (?!.*/web_content/pdf/)([^/]*?\.pdf) /web_content/pdf/$1 [R=301]

RewriteRule pasite-(.*\.asp)$  /content/$1 [R=301,QSA]
RewriteRule home\.asp$  / [R=301]

RewriteRule ^search/tpp/?$ content/search_tangible.asp 
RewriteRule ^search/?$ content/search_real_property.asp 
RewriteRule ^downloads/?$ content/downloads.asp
#RewriteRule ^(.*?view)/([^/]*)/([^/]*)(/.+)? /search/parcel_detail.asp?account=0&$2=$3 [NC,LP,QSA,R=301]

【问题讨论】:

    标签: asp.net-mvc-3 iis-6 windows-server-2003 isapi-rewrite


    【解决方案1】:

    当 IIS 中的虚拟文件夹与生产服务器中的虚拟文件夹匹配时,它会按预期工作;但是,如果虚拟文件夹不同,您会看到奇怪的 URL?

    听起来好像 .htaccess 中的重写规则是特定于生产设置的。

    您是否可以在 beta 服务器上对 helicon 的 httpd.conf/httpd.ini 进行更改,以便重写规则按预期工作?我不确定规则应该是什么样子,自从我使用类似的东西以来已经有一段时间了。 :/

    这是 httpd.ini 上的一个文档:http://www.isapirewrite.com/docs/#conffile

    听起来与您的情况非常相似的帖子可能会帮助您指出正确的方向:http://www.helicontech.com/forum/15029-ASPNET_40_MVC_and_ISAPI_Rewrite_3.html

    在 httpd.conf 中设置重写规则后,您可能需要阻止 .htaccess 中的规则运行。我认为 AllowOverride None 会实现这一点。这是一个例子:

    <Directory "/parentFolder/dr405">
       AllowOverride None
    </Directory>
    

    我对 httpd.conf 和重写的记忆充其量只是粗略的。我希望这有助于为您指明正确的方向。

    编辑

    您是否尝试过此处答案中给出的建议: https://stackoverflow.com/a/3327031/62054

    这听起来与您遇到的问题非常相似。

    【讨论】:

    • 我认为这个解决方案有几个问题。首先,相同的 .htaccess 文件正在我的测试服务器上运行,该文件在公共 beta 服务器上运行(给我带来问题的服务器)。其次,我编写了 .htaccess 文件(所以我很熟悉它),如果我完全删除它,问题仍然存在。所以,我觉得这意味着我不应该修改我的 httpd.conf 文件的 htaccess。
    • ExtensionlessUrls 是否在测试和生产服务器上被禁用,但不是 beta 版?
    • ExtensionlessUrls = 0 在测试服务器上。我无法亲自查看测试版服务器的配置。对不起,我更新了我的问题。忘记生产服务器。我还没有提到生产服务器,它应该是 beta 版。
    • 我用另一个 SO 问题的答案的链接更新了我的答案。你能添加更多关于你已经尝试过的细节吗?我没有想法,但更多信息可能会帮助其他人回答。 :)
    • 请记住,我无法直接修改托管的 beta 服务器。我试图在我的集成测试服务器上复制这个问题。所以我可以向我的托管服务提供商解释解决方法。首先,我尝试对主站点和应用程序使用相同的应用程序池。其次,我尝试删除/大量修改 .htaccess 文件。第三,我尝试将应用程序作为默认站点运行(相对于网站的子站点)
    【解决方案2】:

    您使用的是什么版本的会话状态?它看起来像会话状态信息,并且设置为无 cookie。

    【讨论】:

    • 不,这是我回答后添加的。你能发布你的web.config吗?具体来说,它将在本节中。 和 元素中。您不必发布整个 web.config,只需发布​​ system.web 部分
    • 其实我觉得我错了,看看这个帖子。 stackoverflow.com/questions/3086066/asp-net-mvc-eurl-axd-errors
    • 它在一台服务器上运行良好,而在另一台服务器上运行良好。 web.config 文件是相同的,其中没有任何 sessionstate 元素
    【解决方案3】:

    规则是什么?有时 'RewriteBase /' 指令是不同构建的原因。

    【讨论】:

    • 我将 .htaccess 的内容添加到问题中。
    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多