我需要为我的HTML5应用程序提供URL重写的帮助,该应用程序托管在IIS上。
在我的应用程序中,我有用于列出学校的页面。学校数据(JSON)来自C#ASP.net API。我通过使用AngularJS($ http.Get)来获取数据。
当我独自跑步时,学校页面工作正常,即没有角度路由。在我的本地IIS中包含Angular JS Routing和host之后,除了Schools页面之外,所有页面都工作得很好,这是我从API获取数据的唯一页面,
我的API网址:
http://localhost/ita_calender_api/ita/values
学校页面网址:
http://localhost:8080/Schools
(注意:我的应用程序在8080端口运行,api是默认的)
在Web.config中重写URL:
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="ITA_CALENDER_API/(.*)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
当我在浏览器中加载此网址时,我将学校页面作为XHR响应,状态为500
有一件事我忘了包括: 仅我的学校页面的CORS访问:
<location path="web/Schools.html">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost/" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
答案 0 :(得分:0)
修改强>
如果您只是想从/School
重定向到/web/schools.html
,您可以直接关注以下内容:
[Route("~/School")]
public ActionResult YourActionThatReturnsSchoolDotHtml()
{
return View();
}
或者,你可以做一个简单的RedirectToAction
:
public ActionResult YourActionThatReturnsSchoolDotHtml()
{
return View();
}
[Route("~/School")]
public ActionResult Schools()
{
return RedirectToRoute(YourActionThatReturnsSchoolDotHtml());
}
我不确定这是否会对您有所帮助,但如果您使用ASP MVC
,则可以通过App_Start / RouteConfig.cs文件设置您的路线,如下所示:
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Schools",
url: "Schools/{*url}",
defaults: new {controller = "Schools", action = "Index" }
);
然后,在SchoolsController.cs
:
[Route("Schools/{*url}")]
public ActionResult Index()
{
return View();
}
如果index.cshtml
目录下还有Views/Schools
个文件
这基本上会将对/Schools/*
MVC操作的每次调用重定向到您的angular router