gpt4 book ai didi

asp.net - 如何更改 ASP.Net WebAPI 应用程序的根路径?

转载 作者:行者123 更新时间:2023-12-03 13:29:29 25 4
gpt4 key购买 nike

我正在尝试创建一个结合 ASP.NET WebAPI 和 Yeoman Angluarjs 生成器的单页 Web 应用程序。目前我有一个项目结构,如下所示
|-- yeomanAngularApp
|-- app
|-- dist
|-- scripts
|-- index.html
|-- etc...
|-- WebApiApp
|-- App_Start
|-- bin
|-- Content
|-- Controllers
|-- Models
|-- WebApiApp.csproj
|-- dist
|-- scripts
|-- index.html

当我想构建应用程序分发时,我复制 dist yeomanAngularApp 中的文件夹进入WebApiApp替换 dist里面的文件夹。

现在这一切都很容易做到。我真正想做的是告诉WebApiApp不使用WebApiApp\作为项目的根,但使用 WebApiApp\dist .这意味着而不是去 http://localhost/dist/index.html , 我可以去 http://localhost/index.html即使 index.htmldist文件夹。除此之外,我还希望 Controller 的 WebAPI 路由也能很好地发挥作用。

我一直在寻找一段时间,我似乎无法找到答案。我能想到的最好的方法是使用 URL 重写,这对我来说感觉不对。

最佳答案

URL 重写正是您想要的,使用条件 block 来测试文件是否存在。您的dist 下的内容目录是静态的(即存在于文件系统中),但 WebApiApp路线是动态的。所以你只需要测试路由是否匹配 dist 中存在的文件。目录与否,如果不是简单地让 .NET 处理路由。将以下内容添加到您的 Web.config <system.webServer> 中的文件部分应该可以解决问题:

<rewrite>
<rules>
<rule name="static dist files" stopProcessing="true">
<match url="^(.+)$" />
<conditions>
<add input="{APPL_PHYSICAL_PATH}dist\{R:1}" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="/dist/{R:1}" />
</rule>
<rule name="index.html as document root" stopProcessing="true">
<match url="^$" />
<action type="Rewrite" url="/dist/index.html" />
</rule>
</rules>
</rewrite>

第二条规则是可选的,但这意味着对站点根目录的请求仍将服务于 index.html来自 dist 的文件目录,有效地使项目的根目录 WebApiApp\dist但仍然允许所有 WebAPI 路由。

关于asp.net - 如何更改 ASP.Net WebAPI 应用程序的根路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24780087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com