12,162
社区成员
发帖
与我相关
我的任务
分享
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<!--使用 Sessionid 来实现推送数据信息(适用于一台机器上有1个以上客户端)-->
<!--使用 HostName 来实现推送数据信息(适用于一台机器上只有1个客户端)-->
<add name="SendMessageType" connectionString="Sessionid"/>
</connectionStrings>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
</appSettings>
<!--
有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。
可在 <httpRuntime> 标记上设置以下特性。
<system.Web>
<httpRuntime targetFramework="4.5" />
</system.Web>
-->
<system.web>
<compilation targetFramework="4.5" debug="true"/>
<httpRuntime targetFramework="4.5"/>
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"/>
</httpModules>
</system.web>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding closeTimeout="00:30:00" openTimeout="00:30:00"
receiveTimeout="00:30:00" sendTimeout="00:00:10" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
messageEncoding="Text">
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="IDRMSService.GetData">
<host>
<baseAddresses>
<add baseAddress="http://192.168.1.103:8088/GetData" />
</baseAddresses>
</host>
<endpoint address="" binding="wsDualHttpBinding" contract="IDRMSService.IGetData"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
<serviceDebug includeExceptionDetailInFaults="false"/>
<serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="2000" maxConcurrentSessions="1000"></serviceThrottling>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="wsDualHttpBinding" scheme="http"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="ApplicationInsightsWebTracking"/>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler"/>
</modules>
<!--
若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。
在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。
-->
<directoryBrowse enabled="true"/>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_IGetData" receiveTimeout="00:30:00"
sendTimeout="00:00:10">
<security mode="None" />
</binding>
</wsDualHttpBinding>
</bindings>
<client>
<endpoint address="http://192.168.1.103:8088/GetData.svc" binding="wsDualHttpBinding"
bindingConfiguration="WSDualHttpBinding_IGetData" contract="IDRMSService.IGetData"
name="WSDualHttpBinding_IGetData">
</endpoint>
</client>
</system.serviceModel>
</configuration>
public class ClientInstance
{
public static GetDataClient client { get; set; }
public ClientInstance()
{
try
{
client = new GetDataClient(new InstanceContext(new CallBack()));
}catch(Exception ex)
{
ErrorLog.Error(ex);
client = null;
}
}
}
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(ICallbackService))]
public interface IGetData
{
/// <summary>
/// 根据填卡人ID获取集合
/// </summary>
/// <param name="tkrId"></param>
/// <returns></returns>
[OperationContract]
List<IncompleteModel> GetList(string tkrId);
/// <summary>
/// 客户端注册上线
/// </summary>
[OperationContract(IsOneWay = false)]
void Register(string id);
/// <summary>
/// 客户端发送消息
/// </summary>
/// <param name="id">患者编码</param>
[OperationContract(IsOneWay = true)]
void ClientSendMessage(string id);
/// <summary>
/// 客户端关闭
/// </summary>
/// <param name="id">客户端ID</param>
[OperationContract(IsOneWay = true)]
void ClientClose(string id);
/// <summary>
/// 客户端登录
/// </summary>
/// <param name="userName"></param>
[OperationContract]
bool ClientLogin(string userName);
/// <summary>
/// 客户端发送心跳包
/// </summary>
/// <param name="message"></param>
[OperationContract(IsOneWay = true)]
void ClientSendBeat(string message);
}
public interface ICallbackService
{
/// <summary>
/// 服务器向客户端发送消息
/// </summary>
/// <param name="list">集合</param>
/// <param name="flag">标识——审核未通过和其他4类的区别</param>
[OperationContract(IsOneWay = true)]
void SendMessage(List<IncompleteModel> list, string flag);
/// <summary>
/// 发送心跳包
/// </summary>
/// <param name="message"></param>
[OperationContract(IsOneWay = true)]
void SendBeat(string message);
}
现在出现新的问题,就是我将WCF服务发布到本机所在局域网的其他电脑上,可以远程访问登录,IIS没有做任何修改,服务的配置做了一点改动。但现在问题是,我将本局域网访问成功的程序放到外网上的另一个局域网内时,就又访问不了了,IIS的配置方面,我看了下,没找出啥不同,防火墙也是关闭的,就是在调用服务方法时,出现超时现象。
服务端配置改动:
<services>
<service name="IDRMSService.GetData">
<!--只是将这部分注掉了-->
<!--<host>
<baseAddresses>
<add baseAddress="http://192.168.1.103:8088/GetData" />
</baseAddresses>
</host>-->
<endpoint address="" binding="wsDualHttpBinding" contract="IDRMSService.IGetData" bindingConfiguration="myBindingNone"></endpoint>
</service>
</services>
搞的很头大