Tag: #wcf

如何在运行时设置端点

我有基于本教程的应用程序 我用来测试与服务器的连接的方法(在客户端应用程序中): public class PBMBService : IService { private void btnPing_Click(object sender, EventArgs e) { ServiceClient service = new ServiceClient(); tbInfo.Text = service.Ping().Replace(“\n”, “\r\n”); service.Close(); } //other methods } 服务主要function: class Program { static void Main(string[] args) { Uri baseAddress = new Uri(“http://localhost:8000/PBMB”); ServiceHost selfHost = new ServiceHost(typeof(PBMBService), baseAddress); try { selfHost.AddServiceEndpoint( typeof(IService), new WSHttpBinding(), […]

如何根据需要指定OperationContract的参数

我想知道如何根据需要在WCF中指定OperationContract方法的参数,以便生成的xsd包含minOccurs =“1”而不是minOccurs =“0”。 例: [ServiceContract(Namespace = “http://myUrl.com”)] public interface IMyWebService { [OperationContract] string DoSomething(string param1, string param2, string param3); } 生成这个xsd: 但我想在代码中定义minOccurs =“1”而无需在xsd文件中手动修复它。

当enum无法序列化时,提前失败或明显抛出

在WCF服务返回带有枚举成员且具有无效值(Enum类型中不存在的int)的DataContract的情况下,客户端上抛出的exception是The underlying connection was closed: The connection was closed unexpectedly. 奇怪的是,这个exception被触发,因为DataContractSerializer无法在连接的服务器端序列化。 我宁愿在服务器端运行时向我抛出一些更有用的东西并且更重要,但可能是编译器警告…… WCF服务合同 [ServiceContract] public interface IDtoService { [OperationContract] MyDto GetData(int value); } public enum Rating { None = 0, NotSet = 1, Somevalue = 34 } [DataContract] public class MyDto { Rating _rate; [DataMember] public Rating Rating { get { return _rate; } set […]

将标头添加到WCF RequestSecurityToken消息

我正在尝试设置将使用WSHttpBinding进行通信的客户端(Web应用程序)和服务(WCF服务)。 看来为了使用这种绑定,客户端发送初步消息来设置频道。 在客户端和服务之间存在一个服务总线,它在自定义头上进行路由。 使用BasicHttpBinding安全性时,该消息没有问题。 我的问题是:有没有办法在初步的RequestSecurityToken消息中添加相同的自定义标头? 先感谢您。

UriTemplate WCF

有没有一种简单的方法可以在同一个定义中使用多个UriTemplates。 [WebGet(UriTemplate = “{id}”)] 例如,我想要/ API / {id}和/ API / {id} /来调用相同的东西。 如果有/不在最后我不想要它。

如何从Azure webjob与Azure webapp进行通信?

我正在运行Azure webjob和Azure webapp。 作业定期运行,并且webapp中需要作业结果。 我如何在那里得到结果? 我尝试使用WCF netNamedPipeBinding但由于Azure webapps没有启动任务,我无法将net.pipe绑定添加到IIS网站,也无法启用net.pipe协议。 我现在使用basicHttpBinding但这个绑定暴露给我绝对不想要的整个互联网。 我只想在同一台机器上运行的webjob和webapp之间进行机器本地通信。 更正 :我认为我在Azure上工作但事实并非如此。 在Azure上运行时,我从webjob收到错误: An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:80 (使用basicHttpBinding )。 可能webapp有一个我不知道的内部端口号。

防止CompileAssemblyFromSource生成具有重复文件名的临时文件

我的WCF应用程序使用在运行时编译的代码来计算报告的某些值。 我正在使用CSharpCodeProvider.CompileAssemblyFromSource来编译代码。 如果客户端(Silverlight应用程序)在计算另一个报告时请求报告,则CSharpCodeProvider.CompileAssemblyFromSource会生成具有重复名称的临时文件,这会导致IOException(“文件’C:\ Windows \ TEMP \ uviewdyd.out’已经存在的。“) 有谁知道如何防止这种情况?

如何以JSON格式传递TimeSpan值?

我用Fiddler测试我的WCF Rest。 我总是得到 HTTP/1.1 400 Bad Request 有这个post值: { “session”:{ “Session”:”088a688d-ea69-4264-9266-381e9e540d00″, “LoginID”:”testid”, “Serial”:”testserial” }, “sub”:[ { “Type”:0, “StartDate”:”\/Date(1319731200000+0800)\/”, “EndDate”:”\/Date(1319731200000+0800)\/”, “Duration”:”12:12:12″ } ] } 我在’持续时间’值中得到错误。 我一直在网上搜索但没有运气。 我希望我能在这里找到答案。 非常感谢!

我如何检查Stream.Null?

我有一个WCF服务,返回一个类似于以下内容: public Stream StreamFile(string filepath) { try { // Grab the file from wherever it is // Throw an exception if it doesn’t exist return fileStream; } catch (Exception ex) { // Log the exception nicely in a place of my user’s choosing } return Stream.Null; } 我曾经尝试返回null,但是如果找不到该文件,我就开始遇到这个问题: WCF – MessageBodyMember – Stream – “Value不能为null” […]

WCF服务库项目找不到对其他项目的引用

我的解决方案中有两个项目:MyApp.Domain和MyApp.WebService。 MyApp.WebService是一个WCF服务库。 我想使用MyApp.Domain中的一些实用程序函数。 所以在MyApp.WebService中,我添加了对MyApp.Domain的引用。 Intellisense选好了,它认出了我需要调用的function。 但是当我构建解决方案时,我收到此错误: 命名空间“MyApp”中不存在类型或命名空间名称“Domain”(您是否缺少程序集引用?) 在using MyApp.Domain.Utility; 这里出了什么问题?