C# 视频监控系列(7):服务器端——封装API(下)(3)

简介:
///   <summary>
        
///  3.2.1.1设置视频预览模式SetPreviewOverlayMode
        
///      说  明:  SDK自3.2版本起在部分显卡中实现了HC卡以overlay方式预览的功能(此功
        
///      能不支持与H卡混插的状态下),可以提高预览的画质和降低CPU利用率。当预览画面小 
        
///      于704*576时,需要调用该函数来启动overlay模式,如不设置则自动切换到offscreen模式
        
///      进行预览显示,当预览画面大于704*576时,SDK自动切换到overlay模式
        
///  
        
///  int __stdcall SetPreviewOverlayMode(BOOL bTrue)
        
///   </summary>
        
///   <param name="bTrue"> 是否设置overlay预览方式,也适用于MD卡 </param>
        
///   <returns> 0表示显卡支持板卡的overlay预览方式;其他值表示显卡不支持  </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetPreviewOverlayMode( bool  bTrue);

        
///   <summary>
        
///  3.2.1.2设置overlay关键色SetOverlayColorKey
        
///      注意:需要在StartVideoPreview前调用该函数。
        
///      说  明:  板卡在显示范围小于704*576时,调用SetPreviewOverlayMode可以开启overlay 
        
///      预览模式,需调用SetOverlayColorKey设置overlay关键色;当显示范围大于704*576时,
        
///      板卡自动切换到overlay预览模式,关键色默认设置为RGB(10,10,10),也可调用 
        
///      SetOverlayColorKey修改关键色。在这两种情况下,都需要将显示窗口的底色设置为和关键
        
///      色相一致。否则图像将难以显示。
        
///      
        
///  
        
///  int __stdcall SetOverlayColorKey(COLORREF DestColorKey) 
        
///   </summary>
        
///   <param name="DestColorKey"> overlay关键色参数(RGB(*,*,*)) </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetOverlayColorKey( int  DestColorKey);
        
// public static extern int SetOverlayColorKey(Color DestColorKey);

        
///   <summary>
        
///  3.2.1.3恢复当前丢失的表面RestoreOverlay 
        
///      说  明:  恢复当前丢失的表面,例如:当系统按下CTRL+ALT+DEL时系统的OVERLAY
        
///      表面会被强制关闭,调用该函数可以恢复OVERLAY表面 
        
///  
        
///  int __stdcall RestoreOverlay()
        
///   </summary>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  RestoreOverlay();

        
#endregion

        
#region  3.2.2 开启及停止视频预览

        
///   <summary>
        
///  3.2.2.1开启视频预览StartVideoPreview
        
///      说  明:  启动视频预览,调用SetPreviewOverlayMode后,可进行overlay模式预览,否则,
        
///      将默认采用offscreen模式预览。当画面大于704*576时,SDK自动切换到overlay预览模式。
        
///  
        
///  int __stdcall StartVideoPreview(HANDLE hChannelHandle,HWND WndHandle,  RECT *rect,BOOLEAN bOverlay, int VideoFormat, int FrameRate) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="WndHandle"> 显示窗口句柄 </param>
        
///   <param name="rect">
        
///      显示窗口内的矩形区域
        
///      Rect.right  必须为8的倍数
        
///      Rect.bottom必须为16的倍数 
        
///   </param>
        
///   <param name="bOverlay"> 是否启用Overlay预览模式 </param>
        
///   <param name="VideoFormat"> 视频预览格式(目前无效) </param>
        
///   <param name="FrameRate"> 视频预览帧率(PAL:1-25,NTSC:1-30) </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  StartVideoPreview(IntPtr hChannelHandle, IntPtr WndHandle,  ref  Rectangle rect,  bool  bOverlay,  int  VideoFormat,  int  FrameRate);
        
// public static extern int StartVideoPreview(IntPtr hChannelHandle, IntPtr WndHandle, ref RECT rect, bool bOverlay, int VideoFormat, int FrameRate);

        
///   <summary>
        
///  3.2.2.2停止视频预览StopVideoPreview
        
///      说  明:  停止视频预览
        
///  
        
///  int __stdcall StopVideoPreview(HANDLE hChannelHandle) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  StopVideoPreview(IntPtr hChannelHandle);

        
#endregion

        
#region  3.2.3 视频参数的设置及获取

        
///   <summary>
        
///  3.2.3.1设置视频参数SetVideoPara
        
///      说  明:  设置视频参数
        
///  
        
///  int __stdcall SetVideoPara(HANDLE hChannelHandle, int Brightness, int Contrast, int Saturation, int Hue) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="Brightness"> 亮度值(0-255) </param>
        
///   <param name="Contrast"> 对比度(0-127) </param>
        
///   <param name="Saturation"> 饱和度(0-127) </param>
        
///   <param name="Hue"> 色调(0-255) </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetVideoPara(IntPtr hChannelHandle,  int  Brightness,  int  Contrast,  int  Saturation,  int  Hue);

        
///   <summary>
        
///  3.2.3.2获取视频参数GetVideoPara
        
///      说  明:  获取视频参数
        
///  
        
///  int __stdcall GetVideoPara(HANDLE hChannelHandle,  VideoStandard_t *VideoStandard, int*Brightness, int *Contrast, int *Saturation, int *Hue) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="VideoStandard"> 视频制式 </param>
        
///   <param name="Brightness"> 亮度指针值(0-255) </param>
        
///   <param name="Contrast"> 对比度指针值(0-127) </param>
        
///   <param name="Saturation"> 饱和度指针值(0-127) </param>
        
///   <param name="Hue"> 色调指针值(0-255) </param>
        
///   <returns>   成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  GetVideoPara(IntPtr hChannelHandle, VideoStandard_t VideoStandard,  out   int  Brightness,  out   int  Contrast,  out   int  Saturation,  out   int  Hue);

        
#endregion

        
#endregion

        
#region  3.3视频信号设置(制式、状况、输入位置等)

        
///   <summary>
        
///  3.3.1设置视频制式SetVideoStandard,此函数只对H卡有效
        
///      说  明:  设置视频制式,在某一制式的摄像头已经接好的情况下启动系统时可不必调用该
        
///      函数,如果没有接摄像头的情况下启动系统然后再接NTSC制式的摄像头则必须调用该函    
        
///      数,或者中途调换不同制式的摄像头也必须调用该函数。
        
///  
        
///  int __stdcall SetVideoStandard(HANDLE hChannelHandle,  VideoStandard_t VideoStandard) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="VideoStandard"> 视频制式 </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetVideoStandard(IntPtr hChannelHandle, VideoStandard_t VideoStandard);

        
///   <summary>
        
///  3.3.2设置系统默认的视频制式SetDefaultVideoStandard
        
///      注意:该函数只能在系统初始化(InitDSPs)之前运行,否则无效
        
///      说  明:  设置系统默认的视频制式,系统中所有的视频输入通道如果无视频输入或者在系
        
///      统启动的时候,通道会按照所设置的系统默认视频制式进行处理。 
        
///  
        
///  int __stdcall SetDefaultVideoStandard(VideoStandard_t VideoStandard) 
        
///   </summary>
        
///   <param name="VideoStandard"> 视频制式,默认为PAL  </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetDefaultVideoStandard(VideoStandard_t VideoStandard);

        
///   <summary>
        
///  3.3.3设置视频信号灵敏度SetVideoDetectPrecision
        
///      说  明:  设置视频信号检测的灵敏度。如果视频信号的强度比较弱,或者信号通断的切换    
        
///      比较频繁,会出现“无视频信号”的提示字样,为了避免提示字样影响图像,可以更改视频
        
///      信号检测的灵敏度。灵敏度取值越大,检测精度越低,出现“无视频信号”提示字样的频率
        
///      越低。当将value值设置为0xffffffff时,将不会再出现“无视频信号”的提示字样。
        
///  
        
///  int __stdcall SetVideoDetectPrecision(HANDLE hChannel,unsigned int value)
        
///   </summary>
        
///   <param name="hChannel"> 通道句柄 </param>
        
///   <param name="value"> 灵敏度。取值范围:0-100,默认为20 </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetVideoDetectPrecision(IntPtr hChannel,  uint  value);

        
///   <summary>
        
///  3.3.4获取视频信号输入情况GetVideoSignal
        
///      说  明:  获取视频信号的输入情况,用于视频丢失报警 
        
///  
        
///  int __stdcall GetVideoSignal(HANDLE  hChannelHandle)
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <returns> 信号正常返回0;返回其他值说明信号异常或有错误 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  GetVideoSignal(IntPtr hChannelHandle);

        
///   <summary>
        
///  3.3.5调整视频信号输入位置SetInputVideoPosition
        
///      说  明:  设置视频信号的输入位置。(x,y)为系统处理图像的左上角在摄像机输入的原
        
///      始图像中的坐标,某些摄像机输入的图像在预览时可能在左边会有黑边,可以通过此函数进
        
///      行调节,x必须设置为2的整数倍。(x,y)的取值和摄像机的型号有关,如果指定的值和
        
///      摄像机的输入参数不匹配,可能会导致图像静止、水平垂直方向滚动或者黑屏,请谨慎使用。 
        
///  
        
///  int __stdcall SetInputVideoPosition(HANDLE hChannel,UINT x,UINT y) 
        
///   </summary>
        
///   <param name="hChannel"> 通道句柄 </param>
        
///   <param name="x"> X轴坐标,默认值为8 </param>
        
///   <param name="y"> Y轴坐标,默认值为2 </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetInputVideoPosition(IntPtr hChannel,  uint  x,  uint  y);

        
///   <summary>
        
///  3.3.6设置反隔行变换及强度SetDeInterlace
        
///      说  明:  设置是否采用反隔行算法,已经采用反隔行时的强度
        
///  
        
///  释  义:  反隔行变换 
        
///  如果该通道的图像需要进行4CIF的预览或编码,此时的图像中会同时包含奇、偶两
        
///  场的数据,由于奇场图像和偶场图像不同步,导致图像中运动的部分发生错位、边缘模糊,
        
///  此时需要对图像进行反隔行变换来去掉这种现象。如果用户能够确定使用的是逐行扫描格式
        
///  的摄像机,或者主要应用在静止场景,此时可以关掉反隔行变换功能,或者降低强度,这样
        
///  可以提高系统运行效率,并降低反隔行变换对图像质量带来的损失。 
        
///  
        
///  int __stdcall SetDeInterlace(HANDLE hChannelHandle,UINT mode,UINT level) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="mode">
        
///      0表示该通道不进行反隔行变换,此时level参数无效;
        
///      1表示使用旧的算法;
        
///      2表示使用默认算法(系统默认值)。
        
///   </param>
        
///   <param name="level">
        
///      mode=1时有效,其它时无效。
        
///      0-10,反隔行变换的强度逐渐加强,0最弱,对图像的损失最小,10最强,对图像的损失最大。
        
///   </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetDeInterlace(IntPtr hChannelHandle,  uint  mode,  uint  level);



        
#endregion

        
#region  3.4视频编码参数设置

        
//         释  义:  双编码功能(主、子通道) 
        
//   对一路视频图像进行两路视频编码,两路视频可以有不同的码流类型、不同分辨率、不
        
// 同码率等。3.0版本对双编码功能做了增强,子通道的所有参数都可以任意设置。 
        
// 双编码中主通道和子通道唯一的区别在于:子通道占用的系统资源比主通道少,优先级
        
// 比主通道低。当系统忙时,会尽量保证主通道编码,并先从子通道开始丢帧。由于占用资源
        
// 少,因此可以利用子通道来实现多路高分辨率的非实时编码。例如:可以把DS-4000HC中
        
// 的每个子通道全部设置为4CIF分辨率(SetSubStreamType),而不使用主通道编码,这样就
        
// 可以实现全部通道的4CIF编码。在一般场景下,每路图像都可以达到15帧以上。 

        
///   <summary>
        
///  3.4.1主、子通道切换SetupSubChannel
        
///      说  明:  配合双编码模式使用。当设置某个通道为双编码模式时,如主通道编码CIF,子
        
///      通道编码QCIF,这时可对主/子通道分别设置某些参数。关键帧间隔、OSD、LOGO等参数
        
///      对主/子通道是一样的;在设置帧率、量化系数、变码流/定码流模式、码流大小等参数时应
        
///      调用此函数分别对主/子通道进行设置,缺省是对主通道进行设置
        
///  
        
///  int __stdcall SetupSubChannel(HANDLE hChannelHandle, int iSubChannel) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="iSubChannel"> 子通道号(0表示主通道,1表示主通道) </param>
        
///   <returns> 成功返回0;失败返回错误号  </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetupSubChannel(IntPtr hChannelHandle,  int  iSubChannel);


        
///   <summary>
        
///  3.4.2获取双编码时数据流类型GetSubChannelStreamType
        
///      说  明:  配合双编码模式使用,当设置双编码模式时,启动录像后,DSP会向上送两种
        
///      数据流,调用此函数得到主通道和子通道的数据流类型,供应用程序使用。
        
///  
        
///  int __stdcall GetSubChannelStreamType(void  *DataBuf, int FrameType) 
        
///   </summary>
        
///   <param name="DataBuf"> 数据缓存区 </param>
        
///   <param name="FrameType"> 帧类型 </param>
        
///   <returns>
        
///      0 其他数据  
        
///      1 主通道数据流的文件头
        
///      2 子通道数据流的文件头 
        
///      3 主通道数据流的视频帧类型 
        
///      4 子通道数据流的视频帧类型 
        
///      5 数据流的音频帧 
        
///   </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  GetSubChannelStreamType(IntPtr DataBuf,  int  FrameType);

        
#region  3.4.3编码流类型的设置及获取(不支持动态修改)

        
///   <summary>
        
///  3.4.3.1设置主通道编码流类型SetStreamType
        
///      说  明:  设置主通道编码流类型。此函数需在启动编码前进行设置
        
///  
        
///  int __stdcall SetStreamType(HANDLE hChannelHandle, USHORT Type) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="Type"> 流类型 </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetStreamType(IntPtr hChannelHandle,  ushort  Type);

        
///   <summary>
        
///  3.4.3.2获取主通道编码流类型GetStreamType
        
///      说  明:  获取主通道编码流类型
        
///  
        
///  int __stdcall GetStreamType(HANDLE hChannelHandle, USHORT *StreamType) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="StreamType"> 流类型 </param>
        
///   <returns> 成功返回0;失败返回错误号  </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  GetStreamType(IntPtr hChannelHandle,  ref   ushort  StreamType);

        
///   <summary>
        
///  3.4.3.3设置子通道编码流类型SetSubStreamType 
        
///      说  明:  设置子通道编码流类型,此函数需在启动编码前进行设置
        
///  
        
///  int __stdcall SetSubStreamType(HANDLE hChannelHandle, USHORT Type) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="Type"> 流类型 </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetSubStreamType(IntPtr hChannelHandle,  ref   ushort  Type);

        
///   <summary>
        
///  3.4.3.4获取子通道编码流类型GetSubStreamType
        
///      说  明:  获取子通道编码流类型
        
///  
        
///  int __stdcall GetSubStreamType(HANDLE hChannelHandle, USHORT *StreamType) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="StreamType"> 流类型 </param>
        
///   <returns></returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  GetSubStreamType(IntPtr hChannelHandle,  ref   ushort  StreamType);

        
#endregion

        
#region  3.4.4(支持动态修改)的编码参数设置

        
///   <summary>
        
///  3.4.4.1设置编码图像质量SetDefaultQuant
        
///      说  明:  设置图像量化系数,用于调整图像质量。量化系数越小图像质量越高。系统默认量化系数值为18,18,23。 
        
///      释 义: 量化系数
        
///      量化系数是强烈影响MPEG标准中编码图像质量和码率的参数,当量化系数越低,图
        
///      像质量就会越高,码率也就越高,反之,图形质量就会越低,码率也就越低 
        
///  
        
///  int __stdcall SetDefaultQuant(HANDLE hChannelHandle, int IQuantVal,  int PQuantVal, int BQuantVal) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="IQuantVal"> I帧量化系数,取值范围:12-30 </param>
        
///   <param name="PQuantVal"> P帧量化系数。取值范围:12-30(目前无效) </param>
        
///   <param name="BQuantVal"> B帧量化系数。取值范围:12-30(目前无效) </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>
        [DllImport( " DS40xxSDK.dll " )]
        
public   static   extern   int  SetDefaultQuant(IntPtr hChannelHandle,  int  IQuantVal,  int  PQuantVal,  int  BQuantVal);

        
///   <summary>
        
///  3.4.4.2设置编码帧结构、帧率SetIBPMode
        
///      说 明:  设置编码帧结构和帧率。支持动态修改
        
///      释 义: 关键帧间隔
        
///      关键帧为编码码流中采用帧内压缩的图像帧,其特点是图像清晰度好,但数据量大,通
        
///      常作为帧间编码的原始参考帧。关键帧间隔是连续的帧间编码的帧个数,因H264(MPEG4)
        
///      编码是有损压缩,关键帧的个数会影响图像质量,因此关键帧的间隔需要合理设计。
        
///  
        
///  int __stdcall SetIBPMode(HANDLE hChannelHandle, int KeyFrameIntervals, int BFrames, int PFrames, int FrameRate) 
        
///   </summary>
        
///   <param name="hChannelHandle"> 通道句柄 </param>
        
///   <param name="KeyFrameIntervals"> 关键帧间隔。取值范围1-400,系统默认为100 </param>
        
///   <param name="BFrames"> B帧数量,取值为0或者2,系统默认为2  </param>
        
///   <param name="PFrames"> P帧数量。目前暂取值无效 </param>
        
///   <param name="FrameRate"> 帧率,帧率范围1-25(PAL)、1-30(NTSC) </param>
        
///   <returns> 成功返回0;失败返回错误号 </returns>

        [DllImport("DS40xxSDK.dll")]


本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/586681,如需转载请自行联系原作者

相关文章
|
1月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
|
1天前
|
缓存 测试技术 API
API的封装步骤流程
API封装流程是一个系统化的过程,旨在将内部功能转化为可复用的接口供外部调用。流程包括明确需求、设计接口、选择技术和工具、编写代码、测试、文档编写及部署维护。具体步骤为确定业务功能、数据来源;设计URL、请求方式、参数及响应格式;选择开发语言、框架和数据库技术;实现数据连接、业务逻辑、错误处理;进行功能、性能测试;编写详细文档;部署并持续维护。通过这些步骤,确保API稳定可靠,提高性能。
|
1月前
|
缓存 测试技术 API
从零到一:构建高效的 RESTful API 服务器
在当今的软件开发环境中,RESTful API 是实现系统间数据交互的关键组件。本文探讨了如何从头开始构建一个高效的 RESTful API 服务器,包括技术选型、架构设计、性能优化等方面的内容。我们将以 Python 的 Flask 框架为例,展示如何设计一个可扩展且高性能的 API 服务器,并提供实际代码示例来说明最佳实践。
|
19天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
53 0
|
2月前
|
开发框架 缓存 NoSQL
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
|
2月前
|
存储 开发框架 前端开发
基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
|
2月前
|
开发框架 前端开发 JavaScript
循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理
循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理
|
1月前
|
存储 开发框架 .NET
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
|
2月前
|
开发框架 JSON 前端开发
利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理
利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理

热门文章

最新文章