【问题标题】:Seperate client sources from the server's ones将客户端源与服务器源分开
【发布时间】:2017-02-13 11:54:15
【问题描述】:

我想使用具有以下文件夹结构的 C#/MVC5 创建一个 Web 应用程序,其中我的客户端源与服务器的源是分开的

  • 控制器
    • HomeController.cs
    • FooApiController.cs
  • 客户端
    • 资产(文件夹)
      • 图像(文件夹)
        • logo.png
      • 字体.ttf
    • 组件(文件夹)
      • foo(文件夹)
        • fooService.js
    • index.cshtml
    • web.config(编辑)

我希望能够在客户端文件夹中调用我的不同文件,而不需要文件夹“客户端”,例如:

<img src="assets/images/logo.png" /> 

而不是

<img src="client/assets/images/logo.png" />

此外,我想将所有其他文件路由到 client/index.cshtml。 I though about adding a route like this

routes.MapRoute(
    name: "Default",
    url: "{*anything}",
    defaults: new { controller = "Home", action = "Index" }
);

HomeController.cs

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View("~/client/index.cshtml");
    }
}

并为我的客户端文件夹中的每个文件夹添加this post 中指定的规则。例如:

<rule name="client" stopProcessing="true">
      <match url="^assets/?(.*)$" />
      <action type="Rewrite" url="/client/assets/{R:1}" />
</rule>

问题是每当我试图获取我的图像时

http://localhost:49312/client/assets/images/logo.png

// returns to http://localhost:49312/client/assets/images/logo.png
http://localhost:49312/assets/images/logo.png 

我收到“找不到资源”错误

正确的方法是什么?

【问题讨论】:

    标签: c# asp.net-mvc-5


    【解决方案1】:

    【讨论】:

    • 这可能是一个解决方案,但我想在不同的项目中重用我的客户端源 (UWP html/js)
    【解决方案2】:

    我刚刚发现它为什么不起作用: 我将 web.config 文件从默认 Views 文件夹复制到我的客户端文件夹。

    此文件中有一个阻塞处理程序:

    <system.webServer>
        <handlers>
           <remove name="BlockViewHandler"/>
           <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
        </handlers>
    </system.webServer>
    

    我做了我在最初帖子中所说的一切,并删除了这个处理程序,现在效果很好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      相关资源
      最近更新 更多