Mat*_*nze 10 architecture asp.net iis asp.net-mvc asp.net-mvc-5
我试图确定在ASP.NET MVC 5中实现Uncle Bob的尖叫架构是否可能(或实际),而不是使用默认的文件夹结构.
以下是尖叫架构描述的链接:http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-Architecture.html
假设的文件夹结构看起来像这样:
根
相应的URL路由如下所示:
我创建了一个自定义的RazorViewEngine并添加了适当的视图位置格式(例如"〜/ {1}/Views/{0} .cshtml")和部分视图位置格式(例如"〜/ Shared/Views/{0}". CSHTML").我还将共享的_ViewStart.cshtml移动到根目录,并将Views/Shared文件夹的web.config与根级web.config合并,以避免在所有View文件夹中复制这两个文件.
一切都很好,但是,如果我尝试导航到索引页面(例如http://www.example.com/employees/),我会收到403.14错误(禁止).所有其他路线(包括http://www.example.com/employees/index)都可以正常工作.
我的猜测是IIS明确阻止了到控制器索引方法的路由,因为URL与文件系统中的文件夹一致,默认情况下禁用目录浏览.但是,如果我启用目录浏览,它实际上需要我到实际的目录列表而不是路由到控制器的索引方法.
我可以将Customers和Employees文件夹移动到子文件夹中(即将它们移出根目录)并且一切正常,但我想尝试将这些文件夹保持在顶层(根据Screaming Architecture指南).
有没有人有这个问题的解决方案?
请注意,MVC区域不是我正在寻找的解决方案,因为它不允许上述文件夹结构(即以高级用例和视图命名的顶级文件夹直接包含在Views文件夹中而不是在子文件夹).
我打赌你对IIS是正确的.如果有两个路径映射到同一资源,则首先在IIS端检查物理路径.
我周围挖路由配置,发现财产RouteExistingFiles上RouteCollection
,并认为这可能是工作.
我将值设置为true
本地并使用项目中的空文件夹进行测试,路由重定向到Home/Index
并导航到localhost:xxx/MyFolder
.它工作正常.
因此,您需要做的就是将此属性设置为true,以便首先选择Asp.net路由而不是物理路由.
归档时间: |
|
查看次数: |
1514 次 |
最近记录: |