IIS7重写模块和ASP.net Request.PhysicalPath
我的任务是为客户创建面包屑功能。他们当前的网站设置为基于 XML/文件。每个 .aspx 页面都有 N 层深度,并有一个控件连接到其各自的 .xml 文件。
我决定通过页面目录结构来实现面包屑。我正在获取物理路径,剥离根目录,分割目录,并将这些部分用作我的面包屑。他们的所有文件夹都以驼峰命名法命名,因此我使用驼峰命名法来分解单词以用于显示目的。
例如:站点可能看起来像
Home
-- SubDir 1
------ SubDir 1.1
---------- MyPage.aspx
-- SubDir 2
------ MySecondPage.aspx
如果您在“ MyPage.aspx”..您获得的面包屑是:
首页 ->子目录 1 ->子目录 1.1 ->我的页面
这是我遇到的问题。客户端还使用 IIS7 重写模块来强制使用小写 URL。问题在于,我在 Request.PhysicalPath 调用中返回的值全部是小写,因此我的显示文本不起作用(因为它依赖于 CamelCase)。如果我关闭 IIS7 强制,它会显示如上。如果没有,我会得到:
Home ->子目录 1 ->子目录 1.1 -> mypage
是否有办法通过 IIS7 重写模块强制使用小写 URL,而不影响 Request.PhysicalPath(或 Request.PhysicalApplicationPath)调用?
谢谢
I've been tasked with creating a bread crumb functionality for a client. Their current website is setup to be XML/file based. Each .aspx page is N levels deep with an control hooked up to its respective .xml file.
I've decided to implement the bread crumbs via the pages directory structure. I'm grabbing the physical path, stripping the root, splitting the directories, and using the parts as my breadcrumb. All of their folders are named in CamelCase, so I am using the camel casing to break up the word for display purposes.
e.g: Site may look like
Home
-- SubDir 1
------ SubDir 1.1
---------- MyPage.aspx
-- SubDir 2
------ MySecondPage.aspx
If you are on "MyPage.aspx".. the breadcrumbs you get are:
Home -> Sub Dir 1 -> Sub Dir 1.1 -> My Page
Here's the issue I am having. The client is also using IIS7 Rewrite Module to enforce lower-case URLs. The problem with this, is that the value I get back in my Request.PhysicalPath call is all lowercase, so my display text does not work (because it is relying on CamelCase). If I turn off the IIS7 enforcement, it displays as above. If not, I'll get:
Home -> subdir 1 -> subdir 1.1 -> mypage
Is there anyway to enforce lower-case URLs via the IIS7 Rewrite module without affecting the Request.PhysicalPath (or Request.PhysicalApplicationPath) calls?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为在这种情况下你不能依赖 Request.PhysicalPath 。
尝试使用此问题中的方法用于获取正确大小写的实际文件名
I think you cannot rely on Request.PhysicalPath in this case.
Try using approach from this question for getting actual file name in proper casing