【问题标题】:Determine if path is cross domain判断路径是否跨域
【发布时间】:2014-03-15 11:03:18
【问题描述】:

在 Application_Start 期间如何确定给定的虚拟路径在域内?

// Cross domain virtual path
"//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"

// In app domain virtual path
"~/scripts/jquery/1.11.0/jquery.min.js" is not.

编辑:

我可以只用吗

VirtualPathUtility.IsRelative()

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 url


    【解决方案1】:

    你不能。

    因为Application_Start期间没有路径

    Application_Start 在应用程序启动和页面处理之前触发,尤其是在发送任何 HTML 之前。

    顺便说一句,您所说的路径是并且必须是 HTML 输出的一部分......它在一个视图中......这是非常非常非常非常非常早期的处理。

    为此,您首先需要确定需要运行控件的视图,该控件需要分析和路由需要启动应用程序的请求 - 最后一部分是您想知道输出的地方。

    【讨论】:

    • 我所说的路径是在代码中提供的......即。 StyleBundle/ScriptBundle
    • @GoClimbColorado 好吧,它是你的代码。我猜你知道当你在那里编码时路径是什么以及它是否是相对的。添加一些有关您在捆绑中尝试执行的操作的详细信息可能有助于获得答案。
    • 所以? Post App_Start 遍历所有脚本包并获取文件并检查它们是否以正确的字符串开头。你试过了吗?
    【解决方案2】:

    不确定您要做什么,但您可以测试并查看该文件是否确实存在:

    if (File.Exists(Server.MapPath(path)))
    {
        //file is on the server
    }
    

    更新:回答您是否可以使用VirtualPathUtility.IsRelative():是的,您可以。每MSDN

    返回一个布尔值,指示是否指定虚拟路径 是相对于应用程序的。

    与我上面显示的不同之处在于,如果文件实际上不存在,File.Exists 将返回 false。 VirtualPathUtility.IsRelative() 将为相对路径返回 true,无论文件是否存在。

    你使用什么取决于你想要完成什么,这不是很清楚。

    【讨论】:

    • 我认为可以回答您自己的问题,但我一定做错了什么,因为它已被删除。我应该将您的答案标记为正确答案吗?
    • 是的,可以回答您自己的问题。我认为您发布的内容只是提出了一个新问题并且没有回答您当前的问题。我认为你提出的是一个很好的问题,应该被问到。至于接受答案,由您决定哪个答案最能解决您的问题
    • 我最终使用了 VirtualPathUtility,正如 @MikeSmithDev 为我验证的那样。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2011-02-05
    • 2014-07-23
    • 2019-01-24
    • 2015-06-22
    • 2010-11-22
    • 2021-06-22
    相关资源
    最近更新 更多