我正在寻找关于如何构建可扩展的WCF服务器(具有动态加载的服务)的建议,最好使用System.Addins或MEF
服务器应该承载实现最小“插件”API(StartService/StopService/GetStatus?/etc)的任何WCF服务(包含在DLL程序集中,在运行时加载)
这是一个好的开始。要讨论的一些目标和要点:
是否为每个服务使用/不使用独立的AppDomain
如何配置每个服务(端点、传输协议)?XML配置文件还是更好的选择
延迟/延迟加载程序集(当服务请求到达时)?可能
我在Biztalk 2006 R2中编写了一个基于net.tcp的服务,它在某个位置侦听,
http://localhost:5060/WCFTcpService
我需要使用原始TCP请求调用此服务。即
我不想创建代理类并在.NET客户端应用程序中使用它。
我怎样才能做到这一点?
实际情况是,将使用Oracle存储过程与此服务进行通信,并且允许我调用此服务的唯一方法是向承载此服务的Biztalk server发送TCP请求。
任何帮助或提示都将不胜感激。谢谢。如果我了解您的问题,我想您可能需要从
我有一个使用BasicHttpBinding和Windows身份验证的WCF服务。
大多数客户端都是域帐户,并使用其默认凭据连接到服务
现在,我想从在本地帐户下运行的ASP.NET客户端连接到该服务。我想使用ASP.NET应用程序可用的windows凭据(域\用户和密码)连接到WCF服务
我知道我可以使用ClientBase.ClientCredentials在代码中完成这项工作
有没有办法在客户端的web.config文件中指定凭据(域\用户和密码),这样我就不必更改代码
编辑
如果无法在配置
对于WCF服务,我在以下服务器端app.config中有一个配置文件:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="default" maxReceivedMessageSize="5000000">
<readerQuotas maxStringContentLength="5000000" max
我创建了一个用于上传图像的WCF服务,它接受System.IO.Stream作为输入参数,并使用流媒体。当我在Silverlight项目中添加服务引用时,它会自动将WCF方法的参数从System.IO.Stream更改为byte[]。有没有人能建议是否有办法解决这个问题,这样我就可以得到System.IO.Stream类型而不是byte[]
提前感谢我认为您应该将basicHttpBinding的transferMode属性设置为正确的值,如中所述。然后再次将服务引用添加到Silverlight
我知道调用正在进行,因为我使用了一个递增的变量来跟踪它。但有些人却永远无法进入输出窗口。这是一个已知的问题吗?有解决办法吗
同样,工作流中的断点也非常不可靠。陷入困境?要使制动点正常工作,您需要将您的工作流项目设置为启动项目。如果是dll,请使用调试启动应用程序使其运行
没有关于Debug.WriteLine的线索。跟踪侦听器是否会因为多线程锁定而丢弃数据?关于未命中断点的问题,通常是因为重构文件夹(obj文件夹)与工作流设计器不同步。解决此问题的一种方法是完全关闭VisualStudio(如果
WCF的WSHTTP绑定支持可靠的会话属性。在那里,我注意到一个布尔属性,它允许您关闭/打开排序
物业描述如下:
有序的:一个布尔值,指定消息是否保证按发送顺序到达
我对这个属性有点困惑,你肯定希望命令永远是真的吗?或者我没有抓住要点,有人能举一个商业案例来说明什么时候订单应该设置为false吗
感谢当处理只能在所有消息到达后开始时,将排序设置为“false”似乎更符合逻辑,这样可以避免重新发送消息……如果每条消息都是自包含的,并且不依赖于它之前或之后的消息;或者,如果每条消息包含可用于确保以正
我正在使用WCF客户端与OC4J Web服务通信。客户端的配置如下所示:
<basicHttpBinding>
<binding name="MyBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<
安装.net 4后,是否有人成功地在IIS7上以2.0集成模式运行wcf
我发现安装.net 4删除了svc的2.0处理程序,并将其替换为.net 4版本(这导致我的v3.5站点出现404.17错误),我通过从v3.0文件夹(Windows Commuication Foundation)运行ServiceModelReg.exe/I,使我的3.5站点重新工作但是这删除了4.0映射,所以它们似乎是互斥的
关于如何在同一台IIS7服务器上运行4.0和3.5 WCF站点,有何建议
编辑
由于.net
标签: Wcf
wcf-clientchunking
在开发WCF服务时,我遇到了将大数据作为方法参数传输的问题(原始大小>4MB,不考虑传输/消息开销)
这个问题的解决方案是使用分块或流式处理,但我看到的所有示例都假设客户机知道使用的方法,并使用可用的块大小发送/接收部分数据,而问题(对我来说)是不可能只调用一个方法,如
SaveData(DataInformation info)
但是编写包装器方法,它将像
SaveDataChunk(byte[] buffer)
是否可以通过某种方式使它对客户端透明,只需调用“SaveData”
编辑:
标签: Wcf
in-memory-database
我们有一个应用程序,它获取实时数据并将其插入数据库。它每天在线4.5小时。我们在17个表中每秒插入数据。用户可以在任何时候查询任何表格,以获取最新的第二次数据和历史记录
使用C#控制台应用程序处理提要和插入
通过WCF服务处理用户请求
我们发现插入是我们的瓶颈;大部分时间都花在那里。我们花了很多时间试图调整表格和索引,但结果并不令人满意
假设我们有足够的内存,将数据插入内存而不是数据库的最佳实践是什么。目前,我们正在使用每秒更新和插入的数据表
我们的一位同事建议在提要处理程序和WCF用户请求处理
好的,我有一个WCF服务写入事件日志
除了一个细节,一切都很好。它不会注意logName属性,…这是配置
<!--EventLog Appender-->
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<logName value="MyCustomLog"/>
<applicationName va
如果我的WCF配置文件有两个服务,比如LoginService和RegistrationService,那么它们是否都必须拥有自己的MetaDataExchange端点,或者我可以只拥有一个MetaDataExchange端点并将其保留在服务元素之外:
<services>
<service name="a">
<endpoint binding="mexHttpBinding" />
</service>
<service name="b"
我的服务方法用PrincipalPermissionAttribute标记,并且我有一个自定义IErrorHandler实现附加到服务。当传入请求没有执行方法的权限时,将抛出System.Security.SecurityExceptionIErrorHandler.providDefault()随后被触发,我想提供一个特殊的错误。但是error参数不是原始异常,它是非类型化的FaultException。此外,error.InnerException为空,尽管我在配置中有以下设置:
<s
我有以下操作合同方法:
[OperationContract]
MyOutputMessageType DeleteVRequest(DeleteVRequest type);
[MessageContract]
public class DeleteVRequest
{
[MessageHeader(Name = "UserId")]
public Guid UserId;
[MessageHeader(Name = "Password")]
我有一个WCF调用,它返回一个对象列表
我已经创建了一个WP7 Silverlight Pivot应用程序,并修改了MainViewModel以从我的WCF服务加载数据,LoadData方法现在如下所示
public ObservableCollection<Standing> Items { get; private set; }
public void LoadData()
{
var c = new WS.WSClient();
c.GetStandingsC
我们有一个非常旧的应用程序。这是一个需要重写的模块。但由于它非常复杂,重写工作一直被推迟
现在我需要知道是否有方法让Delphi5应用程序调用WCF web服务
我知道当Delphi 5发布时,WCF的发明者眼中甚至没有一丝微光。。。但这能做到吗?如果是这样的话,怎么办?WCF web服务只是web服务,对吗?鉴于您的WCF服务正在使用http进行传输,您应该能够像对待任何其他web服务一样对待它。实际上,即使是SOAP、REST还是其他格式的消息传递,也毫无意义。如果Delphi5可以调用we
使用WCF 3.5和,我能够为我的WCF服务获得一个单一的平面WSDL文件,而无需任何指令
现在有了WCF 4,出于某种原因,这不再有效
我尝试了很多博客文章中描述的一切,包括使用行为扩展
它们都是指Chr。Weyers解决方案或推荐WcfExtras。
我还确保为绑定、ServiceContract和ServiceBehavior指定了相同的名称空间
在自定义服务主机中,当即将注入FlatWsdlExtension时,Description.Endpoints集合始终为空。我试图配置我的服务端
我有一项WCF服务,并对我的运营合同作出如下评论:
/// <summary>
/// Call to topup a card.
/// </summary>
/// <param name="topUp">The TopUp object which specifies the card to topup.</param>
/// <returns>Returns a boolean indi
我在VisualStudio2010SP1中使用WSSF,我对WCF集合有一个问题。当我创建一个服务引用并将高级设置更改为使用通用列表而不是数组时。我在尝试使用集合时仍然会得到数组。每当我想添加或删除对象时,我必须将数组来回转换为列表
有人知道为什么吗?或者我需要改变什么才能让它正常工作。在数据契约设计器中,我有两种类型的集合。一个是数据契约集合,另一个是原始数据类型集合
感谢您的帮助 我没有使用WSSF,但在基本级别上,WCF ILists作为数组处理。您必须手动将DTO序列化为列表。也许这就
我将我的WCF服务作为Windows服务托管,所有公开的方法都定义为OneWay=true
现在,我想测试这个服务,看看该服务在实时场景中如何响应100个客户端
有谁能指导我采取什么步骤来实现上述目标
谢谢大家! 如果服务是通过HTTP公开的,可以尝试使用Fiddler和StressImpulsion插件。
工作正常,允许提供一些负载场景并生成报告
有一个有限的免费版本。
我将MaxReceivedMessageSize增加到2147483647,但仍然出现此错误。我将相同的值放在服务器配置和客户端配置上。请帮忙
The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
我在自定义通道上实现IDuplexSessionChannel,因为我使用TCPTTransport。在该自定义通道中,我缓存服务调用响应(客户端缓存)。但它也有错误。在IRequestChannel中,它工作正常。如何更改TryMessage方法中的消息。我的代码:
public Message Receive(TimeSpan timeout)
{
Message response = null;
response = CommunicationCac
标签: Wcf
wcf-data-services
我正在实现一个自定义数据提供程序,我已经实现了它返回数据并可以进行过滤,但是在使关系正常工作时遇到了一些问题
查询元数据时,关系看起来是正确的,查询表时,会显示相关的属性链接,但尝试访问ResourceReference属性时,会出现以下异常:
Object reference not set to an instance of an object.
System.NullReferenceException
stacktrace at System.Da
我的第一个实验是通过应用程序——在defaultWebSite(我的wcf服务)下——用netTbpBinding托管,它成功了。图片中的“sss”
现在我想测试一下我是否可以直接在一个网站下托管它。pic中的ppp
我让ppp只听yo net.Tcp
在我的端点中,我是这样做的:
net.tcp://localhost/service.svc
图片:
为什么是红色的X?我只是将它引用到该站点,就像我以前在应用程序中所做的那样
但我有一个错误:
无法连接到网络。tcp://localhost/
我有一堆VS2010项目在TeamCity构建服务器上自动编译。
构建服务器编译项目,然后对输出运行自动单元测试。
问题是,部分测试试图与本地服务器上的WCF服务通信
测试失败是因为BuildServer只生成项目,而没有将输出服务发布到与TeamCity一起运行的IIS7上。
是否有一种简单的方法可以在每次代码编译完成时通过MSBuild.exe自动通知TeamCityMabe发布我的*.svc文件
多谢各位[=最简单的方法是将IIS7指向TeamCity签出目录-它将在那里构建,这样您就可以
我有一个使用netTcpBinding的WCF服务,没有其他绑定。当我手动将文件部署到IIS时效果非常好,当我进入网络时,我的客户端应用程序可以使用该服务。tcp://localhost(etc)url。现在我正试图让项目在VisualStudio中运行,这样我就可以将服务和客户端放在同一个解决方案中,直接引用服务,而不是通过IIS,并且必须手动重新部署文件
IIS Express和Visual Studio开发服务器都不能使用net.tcp,因此它们已退出。在“我的服务”项目的“Web”选项卡
在我早期的部署环境中一切顺利之后,我将我的站点移到了Server2008R2框中
我有一个启用silverlight的wcf服务(在IIS中),它调用另一个外部服务,但我的wcf服务找不到访问外部服务所需的证书
证书CN=blahblah.com,OID.1.2.840.113549.1.9.2=MyName,OU=MyCompany,O=Provider Group可能没有能够交换密钥的私钥,或者进程可能没有私钥的访问权限。有关详细信息,请参见内部异常
我的网站(及其wcf服务)在自定义应用程
我需要帮助将以下netTcpBinding转换为等效的CustomBinding:
<bindings>
<netTcpBinding>
<binding name="secureNetTcp" openTimeout="00:00:25" closeTimeout="00:00:27" receiveTimeout="00:10:10" sendTimeout="00:01:00"
listenBacklog="50
我想将我的服务合同与其属性分开
例如:
IWirelessService
IWiredService
我希望在IRasadService中实现我的IWirelessService,但当我将wsdl添加到wcf测试客户端时,它会给出以下错误:
添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据。
我只想提供IRasadService作为我的主要Web服务。我该怎么做
相关代码:
[ServiceContract]
public interface IWirelessSer
我正在使用soap(wcf)构建一个服务。我想用一个密码和用户名使我的端点更加安全。当我尝试添加以下配置时,Windows Azure引发以下错误:
错误:无法在此路径上使用此配置节。当节在父级锁定时会发生这种情况。锁定在默认情况下(overrideModeDefault=“Deny”),或者由带有overrideMode=“Deny”或旧版allowOverride=“false”的位置标记显式设置
行号为:
在本地测试时,我不得不在我的IIS中更改此设置,但显然我无法在Windows Azu
我想编写一个WCF服务,它轮询来自另一个服务(可以是ASP.NET Web服务)的数据,并将该数据放入数据库。我希望我的WCF每隔5分钟进行一次投票。这样做的最佳方式是什么?如果我将它托管在IIS中,如何触发它进行轮询
谢谢WCF服务在被调用时会做一些事情。WCF服务不应用作初始化投票的东西
windows服务可用于轮询其他服务和执行其他任务
在windows服务中,有一个内联循环代码块。在循环中执行您想要完成的任务,并进行5分钟的线程睡眠。然后,该服务将每5分钟执行您需要的任何任务。谢谢您的帮
我需要在ASP MVC 4网站上播放带有HTML5视频标签的视频(如果支持),或者在JW Player上播放其他视频。现在我使用WCF REST方法以以下方式访问视频文件:
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, Method = "GET")]
public Stream Download(string id, bool isTemp)
{
//
标签: Wcf
wcf-bindingwcf-client
我有一个wcf服务,运营合同如下
[OperationContract]
bool IsUserAvailable(string userName);
[OperationContract]
[WebInvoke(
Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "CreateUser?userId={userId}")]
bool CreateUser(strin
我们在WCF跟踪日志中得到以下错误
系统达到了为“MaxConcurrentSessions”设置的限制。此油门的限制设置为10。可以通过修改serviceThrottle元素中的属性“maxConcurrentSessions”或修改行为ServiceThrottlingBehavior上的“maxConcurrentSessions”属性来更改限制值
如果不在WCF适配器上使用自定义绑定,我们无法找到修改“MaxConcurrentSessions”属性的好答案
查看了以下文章,但不想更改现
我花了两天时间寻找解决这个问题的方法。似乎在SilverLight应用程序中调用WCF目前仅限于1个客户端,而它与使用WCF的控制台应用程序完美配合
现在这个问题还不清楚,我甚至不知道该采用哪种方法
环境
操作系统:Windows 2008 R2 Enterprise、Silver Light 4、C 4、IIS:7.5
应用程序体系结构
由控制台应用程序托管的WCF服务
[OperationContract]
string DoConnect(int id, string who);
Sil
我想把它用在soapheader上。我补充说
<extensions>
<behaviorExtensions>
<!-- Declare that we have an extension called WSDL Extras-->
<add name="wsdlExtensions" type="WCFExtras.Wsdl.WsdlExtensionsConfig, WCFExtras, Version=1.0.0.0, Cul
出于不必要的原因,我尝试为svcuti创建一个包装器,然后它将标准化为指向特定地址而创建的wsdl&xsd文档。但是,我的一个WCF服务有两个不同的服务合同,一个用于内部处理,一个发布给外部客户端。当我从cmd.exe运行svcutil/target:metadata serviceAddress.svc时,我会得到一个完整的wsdl文档,其中包含以下条目:
<wsdl:service name="MyServiceMain">
<wsdl:port name="Bas
我有一个WCF服务托管在域上的IIS中。我的客户端计算机未加入任何域,或者它位于不受信任的域上,因此我无法调用该服务。错误:在…上没有侦听的终结点。。。。可以接受这个信息
为了解决这个问题,我在调用WCF服务时使用了显式用户凭据。
我在DomainA的一台机器上试过这个,它成功了。我确认使用了UserA。但这在不是来自DomainA的客户机上不起作用
这是因为客户端计算机上正在进行模拟吗?有没有办法将这些显式凭据传输到IIS并在IIS计算机上尝试模拟?好的,我发现这是因为域之间没有信任。此外,
我有一个疑问。我实现了我的wcf 4.0服务方法,如下所示
IAsyncResult BeginGetData(string userid, AsyncCallback cb, object asyncState)
{
// Here i want to call 2 different methods simultaneously of another class
// string result1 = classA.Method1(userid)
我有一个WCF服务,我正试图使其具有事务性。当我使用事务调用服务时,该事务没有被使用,如果我回滚该事务,我的数据库仍会更新
这是服务接口(我只包括我一直在测试的单一方法:
[ServiceContract(SessionMode=SessionMode.Required)]
public interface IUserMenuPermissionService
{
[OperationContract]
[WebInvoke(Method = "POST", RequestFo
我有wcf服务。服务的绑定是wsHttpBinding,安全类型是messagesecurity。该服务托管在IIS上。IIS上的站点绑定是http(80)。该服务还有一个配置了服务行为的证书
绑定:
<wsHttpBinding>
<binding name="maksServiceBinding" maxReceivedMessageSize="2147483647">
<security mode ="Message">
我根据这个示例编写了一个ClientMessageInspector,我可以开始工作了。我有一个服务是其他服务的客户端。它位于“Interface12ServiceProject”项目中。MessageInspector是:
namespace MessageListener.Instrumentation
{
public class MessageInspector : IClientMessageInspector
{
private const strin
我有一个GoDaddy颁发的SSL证书,格式为.crt。此外,我还有以前过期的.pfx格式的证书,其中包含一个私钥
现在我面临的问题是将原始私钥与颁发的证书连接起来,形成一个适合安装到Windows证书存储中的.pfx文件
我遵循了在类似情况下成功使用的步骤来生成代码签名证书(如中所述)。生成的证书适用于HTTPS,,但不适用于WCF的Net.Tcp端点。使用该端点时,由于以下错误,无法初始化:
ArgumentException:证书'CN=domain.com,O=“Company”,L=A
标签: Wcf
wcf-authentication
我有一个asp.net web应用程序,在该应用程序中,如果用户是特定广告组的成员(PrimeMembers),我将使用系统登录名并授予他访问权限
现在,我们已经将身份验证代码移动到一个WCF服务(IsPrimeMember),并且我们得到了另一个WCF服务(GetProfiles),它在提供数据之前调用IsPrimeMember
现在的问题是,如果我在我的asp.net应用程序中调用IsPrimeMember服务,我可以安全地从HttpContext.Current.User.Identity
标签: Wcf
Tcp
resourcesclient-server
在客户端pc上使用客户端/服务器通信被认为是良好的做法。我的应用程序将某些内容“记录”到wcf服务器。我的服务器可以在局域网上本地运行,也可以在internet上的某个地方运行(服务器端的端口转发等)
开销并不是我真正关心的问题,因为我记录的数据量很小,但我会经常记录它。。。假设每10秒左右
我是实例化一次WCF对象(在应用程序启动时从客户端连接到服务器),还是每隔10秒实例化一次新的WCF连接(WCF派生调用)
什么是良好实践。我关心的是在客户资源中应用适当的礼仪
你能给我指点什么好的阅读材料
我在我的网站中使用Serilog&web API都很好
现在我想在WCF中使用Serilog
但是,当我新建一个LoggerConfiguration并从WCF中创建一个logger时,日志似乎不起作用?没有任何内容输出到文本文件
var seriLog = new LoggerConfiguration()
.WriteTo.File(@"C:\Serilogs\myapp.txt")
.CreateLogger();
seriLog.Debug("log message")
我有一个WCF服务应用程序,它成功运行了很长时间
从几天开始,所有客户端调用都会失败,超时时间。我使用逐步调试进行了检查,发现尽管在客户端正确打开了连接,但服务器方法从未运行
服务器部分是:
var host = new ServiceHost(typeof(Server.ClientSession));
host.AddServiceEndpoint(typeof(Contract.IEngine),
new NetNamedPipeBinding(NetNamedPipeSecuri
我有一个现有的ASP.NET MVC 5 Web应用程序,托管在IIS上。我想向这个应用程序添加一个新的WCF服务。在本地运行该服务时,一切正常,但当我将其部署到IIS时,会出现错误:“无法加载文件或程序集…”
它给出错误的程序集在我的ASP.NET MVC应用程序的Web.config文件中定义:
<system.web>
<compilation debug="true" targetFramework="4.5">
<assemblie
标签: Wcf
azureservicebusazure-servicebusrelaywinrt-httpclient
我有一个服务总线中继(WCF SOAP),我想在我的Windows应用商店应用中使用。我已经编写了代码来创建令牌以及下面的客户端
问题是,我得到了一个AuthorizationFailedFault,它返回了一个faultstring“InvalidSignature:The token has a invalid signature”。我无法理解它
我的创建令牌方法:
private static string CreateSasToken()
{
TimeSpan sinceEpoc