V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wangybsyuct
V2EX  ›  C#

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

  •  
  •   wangybsyuct · 12 天前 · 1181 次点击

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

    23 条回复    2024-11-22 17:01:42 +08:00
    klo424
        1
    klo424  
       12 天前
    外包吗?可以联系我
    StoneHuLu
        2
    StoneHuLu  
       12 天前
    .net 的 api 和 mvc 框架都是开箱即用的,有啥需要配置的。。
    gbw1992
        3
    gbw1992  
       12 天前
    你是想自己开发?
    这个是 webapi 文档 https://dotnet.microsoft.com/zh-cn/apps/aspnet/apis ,配合 vs 随便看两眼基本就会
    系统太旧直接 aot ,在哪都能跑
    wangybsyuct
        5
    wangybsyuct  
    OP
       12 天前
    在 abcController 里无法定义 ActionResult def.php(),这么写是无法通过编译。https://imgur.com/a/ZoIfFQ3
    wangybsyuct
        6
    wangybsyuct  
    OP
       12 天前
    @gbw1992 好像不行,操作系统太老了
    jifengg
        7
    jifengg  
       12 天前
    [HttpGet("def.php")]
    ActionResult xxxx(参数)
    wangybsyuct
        8
    wangybsyuct  
    OP
       12 天前
    @StoneHuLu 在 c#mvc 程序里定义 ActionResult def.php(),来模拟以前的 php 访问请求,这么定义是错误的,我不知道该如何弄,才能完全模拟出这个请求。
    wangybsyuct
        9
    wangybsyuct  
    OP
       12 天前
    @jifengg [HttpGet("def.php")]这样写,提示错误,错误是《“System.Web.Mvc.HttpGetAttribute”不包含采用“1”个参数的构造函数》,可能是 mvc 的版本比较低,操作系统比较老,这个版本几乎 c#能用的最高版本了,我改为[HttpGet] [Route("def.php")]也不行,提示 Route 缺少 using 指令或程序集引用。
    jifengg
        10
    jifengg  
       12 天前
    @wangybsyuct 你按你使用的版本,搜索相关的“自定义路由”“自定义 path”等关键词去找吧。这种小问题总会有解决办法的
    gbw1992
        11
    gbw1992  
       12 天前
    @wangybsyuct #5 这家伙,第一次写代码么? 建议先读读文档再动手。
    lzzy1994
        12
    lzzy1994  
       12 天前
    lzzy1994
        13
    lzzy1994  
       12 天前
    ahswch
        14
    ahswch  
       12 天前
    第一步:.net4.6 配置路由(我这边路径是 项目目录/App_Start/RouteConfig.cs)
    routes.MapHttpHandlerRoute("v2exTest", "abc/def.php", "~/t/testHandler.ashx");
    第二步:新建一般处理程序 路径:/t/testHandler.ashx
    第三步:一般处理程序接受 code 参数
    public void ProcessRequest(HttpContext context)
    {
    var code = context.Request["code"];
    context.Response.ContentType = "text/plain";
    context.Response.Write(code);
    }
    第四步:测试 项目部署到服务器后访问 /abc/def.php?code=abc123321 返回 abc123321
    注意:这种路由配置后,本地调试访问会 404 ,部署到服务器正常,建议在服务器使用 vs 调试代码
    ahswch
        15
    ahswch  
       12 天前
    @ahswch 另外 你发的 controler 里配置的路由是和 Views 文件夹下的页面一一对应的,一般用来设置页面 title 或者做 seo 关键词设置
    skydcnmana
        16
    skydcnmana  
       12 天前
    改 mvc 的路由配置是可以的,实在不行你就 url 转发
    ddup
        17
    ddup  
       12 天前
    自定义一下路由就行了,2003 系统你可以搜一下 .net framework 4 mvc 的路由配置。
    wellerman
        18
    wellerman  
       12 天前
    用 requestRouter_x86.msi rewrite_x86_zh-CN.msi 这两个工具, 新 API 随便用什么写。
    quan01994
        19
    quan01994  
       12 天前
    a33291
        20
    a33291  
       12 天前
    这么老的系统大概率用 netcore 会有问题,我们部署的最低系统也是 server 2008

    用以前的 netframework 应该是可以的,关于写法问题先读文档

    此外,除了自带的 mvc,这种 api 的话还有一个叫 Nancy 的很不错,试试看
    Mithril
        21
    Mithril  
       12 天前
    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
        22
    ttyn  
       12 天前 via Android
    2003 用 mvc 有点麻烦,直接 aspx 或者 ashx 简单点,代码直接写页面,都不用编译,也方便修改
    alwaysol
        23
    alwaysol  
       11 天前
    用 nodejs 实现最简单,直接定义接口名叫 def.php,想要什么路由随便加
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5559 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:08 · PVG 16:08 · LAX 00:08 · JFK 03:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.