首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法运行web API

无法运行web API
EN

Stack Overflow用户
提问于 2020-05-11 08:45:10
回答 1查看 57关注 0票数 0

我有两个web-apis

代码语言:javascript
复制
 public string GetRData(string data)
    {
        var serialPort = new SerialPort("COM1", 9600, Parity.Even, 8, StopBits.One);

        try
        {
            if(serialPort.IsOpen)
            {
                var stream = new SerialStream(serialPort);
                stream.ReadTimeout = 2000;

                //byte[] bytestoread = new byte[9999];
                byte[] bytestosend = StringToByteArray(data);

                serialPort.Write(bytestosend, 0, bytestosend.Length);
                //receiveData = serialPort.ReadExisting();

                serialPort.Close();
            }
            else
            {
                //serial port settings and opening it
                serialPort.Open();
                var stream = new SerialStream(serialPort);
                stream.ReadTimeout = 2000;

                //byte[] bytestoread = new byte[9999];
                byte[] bytestosend = StringToByteArray(data);

                serialPort.Write(bytestosend, 0, bytestosend.Length);
                //receiveData = serialPort.ReadExisting();

                serialPort.Close();
            }                         

        }
        catch(Exception ex)
        {

        }


        return data;
    }

    public string GetPData(string id)
    {
        var serialPort = new SerialPort("COM2", 9600, Parity.Even, 8, StopBits.One);
        string receiveData = "";
        try
        {
            //serial port settings and opening it
            serialPort.Open();

            var stream = new SerialStream(serialPort);
            stream.ReadTimeout = 2000;

            //byte[] bytestoread = new byte[9999];
            //byte[] bytestosend = StringToByteArray(data);

            //serialPort.Write(bytestosend, 0, bytestosend.Length);
            receiveData = serialPort.ReadExisting();

            serialPort.Close();


        }
        catch (Exception ex)
        {

        }


        return receiveData;
    }

WebApiConfig.cs

代码语言:javascript
复制
 config.Routes.MapHttpRoute(
       name: "GetRData",
       routeTemplate: "api/{controller}/{action}/{data}",
       defaults: null

       );

        config.Routes.MapHttpRoute(
      name: "GetPData",
      routeTemplate: "api/{controller}/{action}/{id}",
      defaults: new { id = RouteParameter.Optional }

      );

每当我试图点击GetPData时,我就会在Postman中得到以下响应

{“消息”:“没有找到与请求URI‘https://localhost:44337/api/rtu/GetPData/1’匹配的HTTP资源。”、"MessageDetail":“在与请求匹配的控制器'RTU‘上没有找到任何操作。”}

我一直在寻找这个问题,但却找不到解决办法。

注意: GetRData运行得很好

EN

回答 1

Stack Overflow用户

发布于 2020-05-11 11:05:25

您正在URI中包含操作,而不是依赖约定进行路由匹配,因此您应该添加属性来显式指定允许的HTTP谓词:

代码语言:javascript
复制
[HttpGet]
public string GetPData(string id)

话虽如此,您的动作确实以"Get“开头,因此应该是它与之匹配的动词。您应该确保请求是"GET“。否则,路由看起来没问题。你试过用URL点击它吗:

https://localhost:44337/api/rtu/GetPData?id=1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61725638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档