从服务器的客户端分离

时间:2017-02-13 11:54:15

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

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

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

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

<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 

我找不到&#39;未找到的资源&#39;错误

什么是正确的方法?

2 个答案:

答案 0 :(得分:0)

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

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

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

我做了我在初始帖子中说的所有内容以及删除此处理程序,现在效果很好

答案 1 :(得分:0)