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

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

  •  
  •   wangybsyuct · 8 天前 · 1116 次点击

    事情是这样的,服务器比较老 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  
       8 天前
    外包吗?可以联系我
    StoneHuLu
        2
    StoneHuLu  
       8 天前
    .net 的 api 和 mvc 框架都是开箱即用的,有啥需要配置的。。
    gbw1992
        3
    gbw1992  
       8 天前
    你是想自己开发?
    这个是 webapi 文档 https://dotnet.microsoft.com/zh-cn/apps/aspnet/apis ,配合 vs 随便看两眼基本就会
    系统太旧直接 aot ,在哪都能跑
    wangybsyuct
        5
    wangybsyuct  
    OP
       8 天前
    在 abcController 里无法定义 ActionResult def.php(),这么写是无法通过编译。https://imgur.com/a/ZoIfFQ3
    wangybsyuct
        6
    wangybsyuct  
    OP
       8 天前
    @gbw1992 好像不行,操作系统太老了
    jifengg
        7
    jifengg  
       8 天前
    [HttpGet("def.php")]
    ActionResult xxxx(参数)
    wangybsyuct
        8
    wangybsyuct  
    OP
       8 天前
    @StoneHuLu 在 c#mvc 程序里定义 ActionResult def.php(),来模拟以前的 php 访问请求,这么定义是错误的,我不知道该如何弄,才能完全模拟出这个请求。
    wangybsyuct
        9
    wangybsyuct  
    OP
       8 天前
    @jifengg [HttpGet("def.php")]这样写,提示错误,错误是《“System.Web.Mvc.HttpGetAttribute”不包含采用“1”个参数的构造函数》,可能是 mvc 的版本比较低,操作系统比较老,这个版本几乎 c#能用的最高版本了,我改为[HttpGet] [Route("def.php")]也不行,提示 Route 缺少 using 指令或程序集引用。
    jifengg
        10
    jifengg  
       8 天前
    @wangybsyuct 你按你使用的版本,搜索相关的“自定义路由”“自定义 path”等关键词去找吧。这种小问题总会有解决办法的
    gbw1992
        11
    gbw1992  
       8 天前
    @wangybsyuct #5 这家伙,第一次写代码么? 建议先读读文档再动手。
    lzzy1994
        12
    lzzy1994  
       8 天前
    lzzy1994
        13
    lzzy1994  
       8 天前
    ahswch
        14
    ahswch  
       8 天前
    第一步:.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  
       8 天前
    @ahswch 另外 你发的 controler 里配置的路由是和 Views 文件夹下的页面一一对应的,一般用来设置页面 title 或者做 seo 关键词设置
    skydcnmana
        16
    skydcnmana  
       8 天前
    改 mvc 的路由配置是可以的,实在不行你就 url 转发
    ddup
        17
    ddup  
       8 天前
    自定义一下路由就行了,2003 系统你可以搜一下 .net framework 4 mvc 的路由配置。
    wellerman
        18
    wellerman  
       8 天前
    用 requestRouter_x86.msi rewrite_x86_zh-CN.msi 这两个工具, 新 API 随便用什么写。
    quan01994
        19
    quan01994  
       8 天前
    a33291
        20
    a33291  
       8 天前
    这么老的系统大概率用 netcore 会有问题,我们部署的最低系统也是 server 2008

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

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