需求:c#实现 web端,linux实现服务端,如何实现他们之间的通信,异步传输、接受图片。
备用方法:使用mySql数据库,数据库部署在S端。Web端远程访问数据库,写入图片如表,返回记录ID,传给S。S根据ID读取图片,处理图片到另一表,反馈Web端ID,Web端依据ID读取处理后的图片然后显示。
1、填坑记录:
1)vs2013 NuGet安装坑
扩展更新搜索“NuGet”一直显示下载状态,后来用360浏览器打开“详细信息”进入网址:NuGet Package Manager for Visual Studio 2013 - Visual Studio Marketplace,点击 下载 竟然打不开,郁闷ing。why ? 后来发现是屏蔽了,用 谷歌浏览器可以打开,汗。
下载到本地:NuGet.Tools.vsix 然后 右键点击安装即可。
2)项目安装 NetMQ
直接搜索“NetMQ” 安装。这次终于可以了。
3)错误提示:编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。
解决方法:
//项目生成的bin文件夹下并没有生成 System.Runtime.dll;
在web.config中添加如下配置即可:
<system.web>
<compilation debug="true" targetFramework="4.5.1">
<assemblies>
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>
</system.web>
4)使用Asp.Net Global.asax 文件;把代码写到.cs文件
参考博文:使用Asp.Net Global.asax 文件;把代码写到.cs文件
//首先在App_Code文件夹下创建一个类Global.cs把所有Global.asax文件里面的方法都复制过去。类使用partial修饰符并且要继承System.Web.HttpApplication
写法如下:
/// <summary>
/// Global 的摘要说明
/// </summary>
public partial class Global : System.Web.HttpApplication
{
public Global()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
}
}
然后再修改一下Global.asax文件里面只要写上
<%@ Application Language="C#" Inherits="Global" %>
把内容指向刚才写的Global.cs文件就可以了。现在在全局变量里面想写什么就写什么吧。
5) 多线程解决 Application_Start 开启侦听死循环问题
参考博文:
b)C#多线程编程
6)有一个 好像是无法开启另一请求的错误
昨天调的时候有,今天竟然申请的没了。在我第二次点击“开始传输”时报错,现在竟然没了,会不会是个坑。别等部署的时候再蹦出来。
7) App_Code 中定义一个 枚举,一个图片节点类,一个图片节点链表类,写到一个文件中不行,分开写可以正确识别,why ?
8)ASP.NET中局部刷新的实现
参考博文:ASP.NET中局部刷新的实现
ctrl+a 全选要对齐的代码 | |
ctrl+k,ctrl+f 格式化 |
9)复习下session
10)解决VS2013 NuGet程序包 一直显示加载中,无法显示问题
参考博文:解决VS2013 NuGet程序包 一直显示加载中,无法显示问题
最近用vs2013安装程序包,忽然发现用不了,显示一直是加载中,但是vs2017可以。同样的源。尝试更改程序包源,还是不行。
后来发现问题nuget官方网站已经不支持http访问, 只支持https,但是vs2013访问https默认使用的协议为Tls1.1,但是nuget官方网站只支持Tls1.2。要解决这个问题,那就需要让vs2013以Tls1.3访问Nuget的官网,具体解决办法为在程序包管理控制台运行如下命令
[Net.ServicePointManager]::SecurityProtocol=[Net.ServicePointManager]::SecurityProtocol-bOR [Net.SecurityProtocolType]::Tls12
11) 解决 连接mysql 提示 给定关键字不在字典中 刷新就好了
原来在本地好好的,放到服务器上就不行,后来发现是本地的mysql版本和服务器版本不同,把服务器上的引用 Mysql.Data.dll 换成他上面安装的对应版本就行。