需求: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 开启侦听死循环问题
参考博文:
a)C#多线程 - .NET开发菜鸟 - 博客园
b)C#多线程编程
6)有一个 好像是无法开启另一请求的错误
昨天调的时候有,今天竟然申请的没了。在我第二次点击“开始传输”时报错,现在竟然没了,会不会是个坑。别等部署的时候再蹦出来。
今天到这,明天继续coding!
|