各位,我在做一个项目的时候采用了Remoting(http),IIS做为宿主,但是性能很差,速度很慢,不知道大家有没有什么好的建议(针对Remoting)?还有就是Remoting的Tcp协议支持外网访问吗?如果支持,我在服务器上需要设置什么?因为前段时间我也是采用了Tcp,但是外网就是不能访问,老是报连接超时,远程服务器未响应错误,不知道怎么回事?
解决方案 »
- 生成txt文件
- 在windows2008 Server 企业版中 无法安装IIS
- windows 下分次加载TreeView 数据(在线等)
- 为什么使用Server.mappath搜索数据库总是显示c:\inetpub\wwwroot\database\data.mdb而不是正确的路径
- 如何将查询出的数据集保存成xml文件
- ShowDialog() 新打开的窗体有的时候不置顶,跑到后面去了
- c#中 PictureBox中图片 能由矩形改为三角形吗图片也自动变形?
- 请问在dll里能否使用backgroundworker控件
- 实现window2000用户登陆界面中,按“选项”按钮,弹出详细信息?
- Mscomm控件的问题!!!!
- svg图片老是提示:“单击以激活并使用此控件”,怎么解决啊
- 在VS2005中手写事件与应用系统自己的事件有什么不同?
<client>
<wellknown type="Public.BaseData.clsBaseData,Public" url="http://localhost/Remoting/clsBaseData.soap" />
</client> <channels>
<channel ref="http" />
</channels>服务端的Web.Config代码
<service>
<wellknown mode="SingleCall" type="Public.BaseData,Public" objectUri="clsBaseData.soap"/>
</service>
<channels>
<channel ref="http"/>
</channels>我配置文件代码是这样写的,各位帮忙看看有没有什么问题?主要是性能上的问题,访问没有问题的
<service>
<wellknown mode="SingleCall" type="Public.BaseData.clsBaseData,Public" objectUri="clsBaseData.soap"/>
</service>
<channels>
<channel ref="http"/>
</channels>
以下是我在服务器配置文件中加了一段代码:
clientProviders>
<formatter ref="binary"/>
</clientProviders>
<serverProviders>
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
但还是不行。
<serverProviders>
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
</channel>
多个的时候需要这个: machineName ="PC Name"
<application>
<lifetime
leaseTime="60S"
sponsorshipTimeout="30S"
renewOnCallTime="30S"
leaseManagerPollTime="20S"/>
<channels>
<channel ref="tcp" machineName ="我的机器名" port="29087">
<serverProviders>
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
</channel>
</channels>
</application>
</system.runtime.remoting>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="ConnectionString" value="Server = (local);Database = erp20070607154958560;Uid = sa;PWD = "/>
</appSettings> <system.runtime.remoting>
<application>
<wellknown type="crmPublic.BaseData.clsBaseData,crmPublic" url="Tcp://IP:29087/clsBaseData" /><!--基础数据-->
</client>
<lifetime
leaseTime="10S"
sponsorshipTimeout="10S"
renewOnCallTime="10S"
leaseManagerPollTime="10S"/> <channels>
<channel ref="Tcp" machineName ="ERPSERVER" port="29087"/>
<clientProviders>
<formatter ref="binary"/>
</clientProviders>
<serverProviders>
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
</channels>
</application>
<customErrors mode="remoteOnly"/>
</system.runtime.remoting>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="SystemName" value="2B0E3BE1B99CE4F9371B451D06A7B98D949DBB64649112A8E5A953876BCA92A6E3259074524BFB91"/>
<add key="ConnectionString" value="Server = (local);Database =ERP20070607154958560;Uid = sa;PWD = "/>
</appSettings> <system.runtime.remoting>
<application name ="CRMService">
<service>
<wellknown mode="SingleCall" type="crmPublic.BaseData.clsBaseData,crmPublic" objectUri="clsBaseData"/>
</service>
<channels>
<channel ref="tcp server" machineName ="ERPSERVER" port="29087" >
<clientProviders>
<formatter ref="binary"/>
</clientProviders>
<serverProviders>
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
</channel>
</channels>
</application>
<customErrors mode="off"/>
</system.runtime.remoting>
</configuration>
tcpProperties["name"] = "tcpBinary";
tcpProperties["port"] = 8888;
tcpProperties["rejectRemoteRequests"] = false;
tcpProperties["bindTo"] = 外网IP; //注:使用IP地址绑定时将无法使用其它IP地址连接
BinaryClientFormatterSinkProvider tcpClientSinkProvider = new BinaryClientFormatterSinkProvider();
BinaryServerFormatterSinkProvider tcpServerSinkProvider = new BinaryServerFormatterSinkProvider();
tcpServerSinkProvider.TypeFilterLevel = TypeFilterLevel.Full;
TcpChannel tcpChannel = new TcpChannel(tcpProperties,tcpClientSinkProvider,tcpServerSinkProvider);
<wellknown type="crmPublic.BaseData.clsBaseData,crmPublic" url="Tcp://ERPSERVER:29087/clsBaseData" />还有: </client> 对应的开始 <client> 好象没有啊?
?
wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴):你的代码好像Debug不过去啊
-------------------------------------
我的代码是用代码来实现Remoting,而不是用Config文件来配置的!
而且这是服务端的代码,客户端不用做改动,该什么样就什么样!
请参见此消息的结尾。************** 异常文本 **************
System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确的答复或连接的主机没有反应,连接尝试失败。
他的服务程序是不是在IIS上阿????
http://www.glacialcomponents.com/ArticleDetails/CAOMN.aspx
? wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴) :服务端在外网上,有外网IP,客户端随便在哪里,但是不和服务端在同一个局域网里面。服务端有固定IP。我把程序服务端程序和客户端程序都放在服务端服务器上,配置文件中的IP如果写的是外网IP,那就不能访问了,如果写的是内网IP又可以访问了我在服务器上用telnet命令试了一下,居然只有少数几个系统默认端口(如80、3389等)是开放的,其他的全都通不过telnet命令,估计问题出在这个地方,不知道大家有没有什么好的办法开通一下默认不开放的端口?-------------------------------------------------------------------------------
是不是服务器上做了IP策略?还有Telnet不能连通没有监听的端口。所以测试出来的并不准确。