我想将值传递给实现我的服务的类的构造函数.
但是,ServiceHost只允许我传递要创建的类型的名称,而不是传递给其构造函数的参数.
我希望能够传入一个创建我的服务对象的工厂.
到目前为止我发现了什么:
我讨厌MSDN的WCF RIA服务网站.它没有说它是什么,它只说它做了什么.它说它可以实现什么但不说我为什么需要它.
例如:
"开发n层RIA解决方案时的一个常见问题是协调中间层和表示层之间的应用程序逻辑".
嗯,这对我来说意义不大.
"RIA Services通过提供框架组件,工具和服务来解决这个问题,这些组件,工具和服务使RIA客户端可以使用服务器上的应用程序逻辑,而无需手动复制该编程逻辑.您可以创建一个了解业务规则的RIA客户端并且知道每次重新编译解决方案时,客户端都会自动使用最新的中间层逻辑进行更新."
那么从服务器下载DLL?它是描述数据规则的元数据吗?
那是什么?它只是RAD的VS 2010附加组件吗?或者它是WCF之上或其下的技术还是什么?它在哪里生活?有了数据,还有服务器,什么?
如果你能为我总结一下,我很感激.
任何想法如何解决这一问题?
UserService.UserServiceClient userServiceClient = new UserServiceClient();
userServiceClient.GetUsersCompleted += new EventHandler<GetUsersCompletedEventArgs>(userServiceClient_GetUsersCompleted);
userServiceClient.GetUsersAsync(searchString);
Run Code Online (Sandbox Code Playgroud)
.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_UserService"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:52185/UserService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_UserService"
contract="UserService.UserService"
name="BasicHttpBinding_UserService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="Shell.Silverlight.Web.Service3Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service behaviorConfiguration="Shell.Silverlight.Web.Service3Behavior"
name="Shell.Silverlight.Web.Service3">
<endpoint address=""
binding="basicHttpBinding"
contract="Shell.Silverlight.Web.Service3" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
无法在ServiceModel客户端配置部分中找到引用合同"UserService.UserService"的默认端点元素.这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素.
解决!
我没有提到这是一个Silverlight应用程序.我在DLL中有wcf引用,它有自己的"ServiceReferences.ClientConfig"文件.我将DLL的ServiceReferences.ClientConfig的内容移动到主Silverlight项目并且它工作了.
我们有一个应用程序,它具有在IIS7上运行的WCF服务(*.svc)以及查询该服务的各种客户端.服务器正在运行Win 2008 Server.客户端正在运行Windows 2008 Server或Windows 2003服务器.我得到以下异常,我看到它实际上可能与大量潜在的WCF问题有关.
System.TimeoutException: The request channel timed out while waiting for a reply after 00:00:59.9320000. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout. ---> System.TimeoutException: The HTTP request to 'http://www.domain.com/WebServices/myservice.svc/gzip' has exceeded the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer …
Run Code Online (Sandbox Code Playgroud) 我有一些类,我作为服务方法的结果传递,并且该类具有get-only属性:
[DataContract]
public class ErrorBase
{
[DataMember]
public virtual string Message { get { return ""; } }
}
Run Code Online (Sandbox Code Playgroud)
我在服务方面遇到异常:
System.Runtime.Serialization.InvalidDataContractException:类型为"MyNamespace.ErrorBase"的属性"Message"没有set方法.
我必须将此属性作为唯一的getter,我不能允许用户为其赋值.我可以使用的任何解决方法?或者我错过了一些额外的属性?
使用每种技术的优缺点是什么?
WCF Web Api现已合并到Asp.net Asp.net web api现在支持自托管.
我仍然想象如果我想为相同的操作公开多个协议模式,我仍然倾向于WCF,或者Mvc端点也可以这样做吗?
新的Asp.Net web api也暴露了Wsdl吗?如果不是,客户如何找出他们可以使用的操作?
可以说,Mvc的最佳特性是模型绑定器.WCF的等效性有多强?
那么有人能告诉我Asp.net web api带来哪些优势?WCF似乎绝对是更强大/可扩展的选择,imo.关于Mvc Web Api对WCF模型的唯一要求可能是易于开发,但这意味着如果它最终成为严重的设计限制则蹲下.
每个人都在说如何用WCF取代.NET Remoting,但我想知道它是多么准确.我还没有看到任何关于Remoting被弃用的官方消息,在我看来,Remoting肯定比WCF更有意义.即使在框架的4.0版本中,也没有弃用与Remoting相关的对象或方法.我的理解是3.5和4.0框架中的System.AddIn使用Remoting.
有没有人有任何相反的官方消息?
在文章" 选择.NET中的通信选项(3.0版,因为那是该文章的最新版本)"中,它指出:
8跨应用程序域通信
如果需要在同一进程中支持不同应用程序域中的对象之间的通信,则必须使用.NET远程处理.
现在,这当然不准确,因为WCF当然可以用于跨越appdomain边界,但它是否正在为该场景提供官方建议?
更新:我发送了Clemens Vasters(谁是拥有Remoting和WCF的团队)这个问题:
Clemens,我知道你是拥有远程控制和wcf的团队,我有几个问题,我认为我需要去找源代码.
首先,我有一个关于远程处理是否会消失的问题.具体来说,我们有一个相当大的应用程序,它广泛使用远程处理进行跨域appdomain通信,我想知道远程处理的这种用法是否被认为是"遗留".如果是这样,AppDomain.CreateInstance和朋友会被其他东西取代吗?
这是他的回复:
远程处理是.Net框架的一部分,因此它不会消失.自Windows NT 3.5/Windows 95以来,COM一直在Windows中,并且还没有消失,我也不认为它会很快消失.
也就是说,Remoting的开发投资非常少.WCF是Remoting的继承者,并取代了托管代码的COM/DCOM.
对于进程内,跨域应用程序通信远程处理是CLR的本地通信方式.如果您发现在短时间内抽取大量数据或大量消息的性能问题,您应该认真考虑WCF和NetNamedPipeBinding.
当我在C#应用程序中添加.dll文件作为引用时,它显示错误:
无法添加对".... dll"的引用.请确保该文件是可访问的,并且它是有效的程序集或COM组件.
ILDissassembler说没有有效的CLR头,所以我尝试使用regsvr32注册它,这给了我另一个错误:
模块""已加载,但对DLLRegisterServer的调用失败,错误代码为"0x80004005"
我在64位Windows 7机器上使用VS2010终极版.可能是什么问题呢?
感谢您的任何提示/回复
当我尝试启动我在C#中创建的Windows服务时,我收到此错误:
我的代码到目前为止:
private ServiceHost host = null;
public RightAccessHost()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
host = new ServiceHost(typeof(RightAccessWcf));
host.Open();
}
protected override void OnStop()
{
if (host != null)
host.Close();
host = null;
}
Run Code Online (Sandbox Code Playgroud)
我通过授予帐户NETWORK SERVICE的权限解决了上述问题,但现在我有另一个问题:
服务无法启动.System.InvalidOperationException:服务'RightAccessManagementWcf.RightAccessWcf'具有零应用程序(非基础结构)端点.这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在service元素中没有定义端点.System.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel.ServiceModel. System.ServiceModel.Channels.CommunicationObject中的TimeSpan超时).