Glimpse在本地工作,而不是在远程服务器上

本文关键字:服务器 工作 Glimpse | 更新日期: 2023-09-27 17:59:12

在阅读了所有指南、SO页面和故障排除页面后,我发现我终于无计可施了。

我让Glimpse在本地开发服务器上运行良好,但当我将ASP.net(MVC5)应用程序部署到远程服务器时,它根本不起作用。/glimpse.axd给出了一个404,其中LocalPolicyControlCookiePolicy都设置为忽略,并且具有在所有情况下都返回On的自定义安全策略。我的理解是,在禁用ControlCookiePolicy的情况下,我不需要转到/glimpse.axd来启用它,但我在远程服务器上也看不到"一瞥"图标。

即使我转到远程服务器并将localhost浏览到/glimpse.axd,我仍然会得到404。

我的web.config如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
    <section name="glimpse" type="Glimpse.Core.Configuration.Section, Glimpse.Core" />
</configSections>
<system.web>
    <compilation debug="false" />
    <httpRuntime targetFramework="4.5.1" relaxedUrlToFileSystemMapping="true" />
</system.web>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="FormsAuthentication" />
    </modules>
    <urlCompression doDynamicCompression="true" dynamicCompressionBeforeCache="false" />
</system.webServer>
<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
    <logging level="Trace" />
    <runtimePolicies>
        <ignoredTypes>
            <add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet" />
            <add type="Glimpse.Core.Policy.ControlCookiePolicy, Glimpse.Core" />
        </ignoredTypes>
    </runtimePolicies>
</glimpse>
</configuration>

这是远程服务器上的版本(转换后)。我对它进行了一些修剪,删除了appSettings之类的部分。

我的GlimpseSecurityPolicy.cs如下所示:

// Uncomment this class to provide custom runtime policy for Glimpse
using Glimpse.AspNet.Extensions;
using Glimpse.Core.Extensibility;
namespace RationalVote
{
public class GlimpseSecurityPolicy:IRuntimePolicy
{
    public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
    {
        return RuntimePolicy.On;
    }
    public RuntimeEvent ExecuteOn
    {
        // The RuntimeEvent.ExecuteResource is only needed in case you create a security policy
        // Have a look at http://blog.getglimpse.com/2013/12/09/protect-glimpse-axd-with-your-custom-runtime-policy/ for more details
        get { return RuntimeEvent.EndRequest | RuntimeEvent.ExecuteResource; }
    }
}
}

真正的一个做了实际的检查,但我对上面的政策也有同样的问题。

我似乎在远程服务器上的任何地方都找不到任何跟踪输出,它在我的本地机器上记录得很好。

我正在使用VisualStudio发布到web功能进行部署,并且我已经验证了Glimpse.Core.dll在bin文件夹中。

我在事件日志中看不到任何相关内容。

我还将<add namespace="Glimpse.Mvc.Html" />添加到了views文件夹中web.config的namespaces块中。

我尝试将@Html.GlimpseClient()放在</body>上方的_Layout.cshtml文件中,但这不会产生任何效果。

有人有什么想法吗?

Glimpse在本地工作,而不是在远程服务器上

如果snug.axd返回404,则意味着glimpse资源处理程序未注册。

如果您上面显示的web.config内容没有修剪到太多,那么Glimpse不会做太多工作是正常的,因为Glimpse HttpModuleGlimpse HttpHandler没有像这个一样在system.web和/或system.webserver部分中注册

<system.web>
    <httpModules>
        <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet"/>
    </httpModules>
    <httpHandlers>
        <add path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet"/>
    </httpHandlers>
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
        <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode"/>
    </modules>
    <handlers>
        <add name="Glimpse" path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet"  preCondition="integratedMode" />
    </handlers>
</system.webServer>

也许你的转换从本地web.config中删除了很多?