我正在尝试创建一个返回json的wcf服务.我的配置文件有一些问题,我也不知道如何测试它.
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="ContactLibraryJSON.ContactLibrary">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="JSONEndpointBehavior"
contract="ContactLibraryJSON.IContactServiceJSON" />
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://192.168.1.31/ContactLibraryJSON" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="JSONEndpointBehavior">
<webHttp/>
</behavior>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to …Run Code Online (Sandbox Code Playgroud) 我有一个REST WCF服务.当对此服务进行POST尝试以执行如下所述的操作时,我收到以下错误:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "", RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare)]
void Write();
Run Code Online (Sandbox Code Playgroud)
错误: HTTP 307没有操作侦听https://xx.xxx.xx.xxx/EnrollmentServer/Discovery.svc,但是有一个操作正在侦听https://xx.xxx.xx.xxx/EnrollmentServer/Discovery .svc /,所以你被重定向到那里.
任何指针将不胜感激.
那么,我在使用自定义属性装饰的几个服务中获得了许多方法。
该属性用途ApplyDispatchBehavior从IOperationBehavior附加到方法和BeforeCall和AfterCall从方法IParameterInspector之前和服务方法被调用后做一些处理。
一切都很好,很好……当服务方法需要返回 http 状态和消息时,问题就来了。我能找到的唯一方法是让方法WebFaultException<T>传递我们的消息和适当的 http 状态。
问题AfterCall在于从未调用附加属性。
它的长短是:
WebFaultException<T>有没有办法仍然可以使用返回的消息调用我的属性?我有类似以下代码:
<OperationContract()>
<Description("")>
<WebGet(Bodystyle:=WebMessageBodyStyle.Bare, UriTemplate:="TestConnection")>
Function TestConnection() As String
Public Function TestConnection() As String Implements ITestSvc.TestConnection
WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain"
Return "Connection Success"
End Function
Run Code Online (Sandbox Code Playgroud)
但它返回的是 <string xmlns='...'>Connection Success</string>
如何在没有XML包装器的情况下返回"连接成功".我知道我们可以用MessageEncoder做些什么.但是,我希望在操作级别提供它(某些操作需要XML/JSON包装器,而某些操作则不需要).
谁可以帮我这个事?
可能遗漏了一些非常基本的东西.我创建了一个WCF 4.0 Rest服务.当我从浏览器访问网址时,它没有问题,我正在回复我想要的东西.
但是现在我想从客户端mvc应用程序中使用该服务(它也将被其他非.net平台使用,这就是为什么它首先是一个休息服务).
问题是如何获得服务引用,以便我可以开始在我的c#代码中使用它?使用新的最小WCF .net 4配置方法并且没有服务契约的接口,我不知道如何指定mex端点.最终,我不想在生产过程中使用mex端点,只是在开发过程中.我希望能够指定我的所有服务(在一个应用程序中大约10个)都有一个端点和一个小的配置,vs2010 .config转换只是在我发布时撕掉了.
我想知道开发人员对WCF WebApi服务的看法是什么.
在N层应用程序中,我们可以拥有多层服务.我们可以使用服务来消耗外部服务的数据.在那种情况下,使用WCF 4.0创建异步休息服务是值得的.
public interface IService
{
[OperationContractAttribute(AsyncPattern = true)]
IAsyncResult BeginGetStock(string code, AsyncCallback callback, object asyncState);
//Note: There is no OperationContractAttribute for the end method.
string EndGetStock(IAsyncResult result);
}
Run Code Online (Sandbox Code Playgroud)
但随着WCF WebApi的发布,这种方法仍然需要吗?创建异步服务?
如何在IIS/WAS /自托管中托管它们
期待建议和评论.
作为一个非常大的应用程序的一部分,我需要提供一个上传图像的REST服务.由于整个应用程序都是.NET,我一直在尝试找到一个WCF RESTFul服务的工作示例,它可以做到但不能(定义整个配置).网上有一些例子但我不能(由于我在WCF中缺乏知识)使它们都不起作用.(我不断抛出异常).
我很乐意与工作人员联系起来.
我在WCF中组装了一个简单的REST服务:
....
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, UriTemplate = "{uid}/{pwd}/{exrcsPrgmId}/{exchEnum}")]
string GetLiftDataExchange(string uid, string pwd, string exrcsPrgmId, string exchEnum);
....
Run Code Online (Sandbox Code Playgroud)
在调用它时,我并没有完全恢复XML.我得到了HTXML(我自己编写的缩写词)
而不是我期望的:
<Exercise>
<AccountName>Joe Muscle</AccountName>
<UserID>8008008</UserID>
Run Code Online (Sandbox Code Playgroud)
我用HTML编码获取XML:
<Exercise>
<AccountName>John Bonner</AccountName>
<UserID>8008008</UserID>
Run Code Online (Sandbox Code Playgroud)
换句话说,我不需要在浏览器中看到这些数据,而是在应用程序中访问和解析它,所以直接使用XML就可以了.
我在服务装饰上做错了什么来返回这个编码的xml?
我创建了一个OData服务,现在我正在尝试在客户端使用此服务.我想在c#查询表达式中为下面的url创建一个表达式 -
http://odata.org/Product-Service/Product(150)
上面的url在浏览器中工作正常,但我想在C#中为上面的url创建查询表达式.任何帮助都会非常明显.
我正在使用WCF服务4.5 F/W开发REST Full API.请建议如何向客户端发送异常或任何业务验证消息.我正在寻找非常通用的解决方案,请提出最佳方法.我尝试了下面的一些方法,
在向客户端发送响应之前设置OutgoingWebResponseContext.
定义的故障合同只能正常工作添加服务引用(代理类)不能在REST FULL环境中工作.
在catch块中添加WebFaultException类.
WCF休息入门套件 - 我收到了一些关于此的文章和帖子,但他们的codeplex官方建议不再提供此信息.链接.所以,我不想这样做.
这些没有按预期工作..我的示例代码片段:接口:
[OperationContract]
[FaultContract(typeof(MyExceptionContainer))]
[WebInvoke(Method = "GET", UriTemplate = "/Multiply/{num1}/{num2}", BodyStyle = WebMessageBodyStyle.Wrapped,RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
string Multiply(string num1, string num2);
Run Code Online (Sandbox Code Playgroud)
执行:
public string Multiply(string num1, string num2)
{
if (num1 == "0" || num2 == "0")
{
try
{
MyExceptionContainer exceptionDetails = new MyExceptionContainer();
exceptionDetails.Messsage = "Business Rule violatuion";
exceptionDetails.Description = "The numbers should be non zero to perform this operation";
//OutgoingWebResponseContext outgoingWebResponseContext = WebOperationContext.Current.OutgoingResponse; …Run Code Online (Sandbox Code Playgroud) wcf-rest ×10
wcf ×9
c# ×2
rest ×2
wcf-web-api ×2
.net ×1
.net-4.0 ×1
c#-4.0 ×1
file-upload ×1
json ×1
odata ×1
wcf-binding ×1
wcf-client ×1
wcf-hosting ×1
web-services ×1