想用 c#的 mvc 实现一个功能.

35 天前
 wangybsyuct

事情是这样的,服务器比较老 windows server2003 ,上面运行的 php 版本有漏洞,但是 php 无法升级,操作系统更换也非常困难。 想使用 c#的 MVC 实现里面的 php 程序的功能,服务器是提供接口,接口形式不能变。 接口类似于 http://webserver.com/abc/def.php?code=abc123321 我想用 c#的 MVC 实现这个接口,请教大家 mvc 的程序和配置该如何实现? mvc 的程序一些,配置不是很熟。 感谢感谢

1580 次点击
所在节点    C#
24 条回复
Mithril
35 天前
Server 2003 只能用.NET Framework 3.5 或 4 ,4.5 都不行。但这需要你安装才可以,自带的是.NET Framework 2 。
https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependencies

你得找老版本的 Visual Studio 和 Framework ,但 4 应该也足够写你这 WebAPI 了。
ttyn
35 天前
2003 用 mvc 有点麻烦,直接 aspx 或者 ashx 简单点,代码直接写页面,都不用编译,也方便修改
alwaysol
35 天前
用 nodejs 实现最简单,直接定义接口名叫 def.php,想要什么路由随便加
wangybsyuct
18 天前
@gbw1992
@jifengg
@lzzy1994
@ahswch
@ahswch
@skydcnmana
@ddup
@wellerman
@quan01994
@a33291
@Mithril
感谢大家的提出的宝贵意见,特别是 ddup 和 Mithril 。
最后解决了,是路由的问题,解决办法比较麻烦,windows2003 带的 iis 是 6.0 ,把网站 [属性] 里 [主目录] 的配置[映射]里加入.php,可执行文件填入 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 。
这样 IIS 就认为 php 文件是一个自己要解析的文件了,自己写的 mvc 主程序里 Global.asax.cs 才会获取路由。
但是 IIS 版本和 visual studio 2010 的调试模式处理方式不同。
visual studio 2010 的调试模式下,只要在路由 routes.MapRoute 里"{controller}/{action}/{id}",改为"{controller}/{action}.php/{id}",就可以实现。
但是在 IIS 里不行,虽然获取到路由,但是不认,无法抛弃.php,只解析 action 。
后来在 Global.asax.cs 里加入 protected void Application_BeginRequest(object sender, EventArgs e),里面使用 Request.Url.PathAndQuery 获取整个链接参数,
这里把.php 的 action 强制 HttpContext.Current.RewritePath ,特别神奇的是,无论是 Get 还是 POST 参数,都能完整地传递过去。
这里的坑是 vs2010 调试模式和 IIS 是不同的。
vs2010 使用.net 版本是 4.0,带的 mvc 版本是 2.0 ,本想升级一下 mvc 版本,因为想用 Razor ,后来怕又出现什么坑,就放弃了,使用默认的 aspx ,里面可以写 c#,还是很自由的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1091681

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX