C# 响应.html扩展名

C# 响应.html扩展名,c#,asp.net-mvc,iis,C#,Asp.net Mvc,Iis,我正在将一个网站从静态网站移动到MVC5。我需要创建控制器/操作来响应使用旧URL的请求。(并返回重定向,页面移动)如果我只是在属性路由中硬编码旧的URL,我得到 HTTP错误404.0-找不到您正在查找的资源已被删除、名称已更改或暂时不可用 最好的方法是什么。(我的意思是,如何为扩展名为.html的url创建路由,并由ASP.net响应) 我想现在IIS会看到这个.html文件,并尝试在不通过应用程序的情况下将该文件发送到客户端。如何在共享主机上删除该行为 现在提供的html文件位于不同的文件

我正在将一个网站从静态网站移动到MVC5。我需要创建控制器/操作来响应使用旧URL的请求。(并返回重定向,页面移动)如果我只是在属性路由中硬编码旧的URL,我得到

HTTP错误404.0-找不到您正在查找的资源已被删除、名称已更改或暂时不可用

最好的方法是什么。(我的意思是,如何为扩展名为.html的url创建路由,并由ASP.net响应) 我想现在IIS会看到这个.html文件,并尝试在不通过应用程序的情况下将该文件发送到客户端。如何在共享主机上删除该行为

现在提供的html文件位于不同的文件夹中

例如:

我需要将此URL映射到控制器/操作:

example.com/services/Renovations.html
我们将把它映射到controller=>services和action=>renovations

example.com/contactus.html

我们将把它映射到controller=>contact,action=>index

根据您的新体系结构使用MVC控制器/操作编写您的应用程序,然后在IIS级别实现一组规则,将旧URL映射到新URL。重写规则将存储在
web.config
文件中,该文件便于将配置从Dev移动到Staging,再移动到实时环境

如果您给出一些旧URL及其相应的新路由的示例,我可以为您提供一些与之匹配的示例IIS重写规则。如果您的旧URL遵循一种模式,例如
/products/{skucode}.html
等,那么这种方法最有效

编辑:一些示例重写规则以匹配请求的重定向

<configuration>
<system.webServer>
  <rewrite>
    <rules>
      <clear />
      <rule name="Static rewrites" enabled="true" stopProcessing="true" >
        <match url="^(.*?\.html)$" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
        <action type="Redirect" url="{static site rewrites:{R:1}}" appendQueryString="true" />
      </rule>
    </rules>
    <rewriteMaps>
      <rewriteMap name="Static site rewrites" ignoreCase="true">
        <add key="contact.html" value="contact" />
        <add key="services/renovations.html" value="services/renovations" />
      </rewriteMap>
    </rewriteMaps>
  </rewrite>
</system.webServer>
</configuration>


对于您希望重定向的其他页面,应该清楚如何向
重写映射添加更多键。为了澄清,这些是重定向,将
HTTP 301永久移动
响应代码返回到浏览器,并透明地重定向到新路由。

谢谢@tianvh,例如,我要更改的两条路线是:/Services/revolution.html到/Services/revolution/Contact.html到/Contact@BenjaminWeblySpeaking.ca我编辑了我的答案,以解决这些例子。感谢您的澄清。实际上,我打算重定向到一个控制器,然后实现301重定向。如果你想重写URL而不是重定向,那么在IIS级别执行此操作可以很容易地进行更改。这样,您的客户机仍然可以在地址栏中看到
contact.html
,但现在可以从新的MVC控制器获取内容。要做到这一点,只需将
规则
更改为
,您提到的规则在我们的开发服务器上非常有效。我们遇到的唯一问题是,我们的客户端正在共享主机上运行,它们不允许通配符重定向。所以我必须为每一页写规则。幸运的是,我们只有7页要重写。下面是一个我使用的规则的例子,它很有效。示例