新聞中心
如何調(diào)用帶參數(shù)的WCF方法
[OperationContract(Name="sayHelloJson")]
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名申請、虛擬主機、營銷軟件、網(wǎng)站建設(shè)、松山網(wǎng)站維護、網(wǎng)站推廣。
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "sayHello", BodyStyle = WebMessageBodyStyle.Wrapped)]
String sayHello();
[OperationContract(Name = "SendMessageJson")]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "SendMessage/{Message}", BodyStyle = WebMessageBodyStyle.Wrapped)]
String SendMessage(String Message);
比如說第一個不帶參數(shù)的:
那么第二個帶參數(shù)的應(yīng)該怎么調(diào)用?(比如說參數(shù)是"abc")
我指的是在瀏覽器中或java的httpclient中,因為我準(zhǔn)備在android上實現(xiàn)客戶端,所以.net的調(diào)用方式就不必講了。
你URITemplate已經(jīng)設(shè)置了。Get方式。
我猜測一下調(diào)用的URL應(yīng)該是: 網(wǎng)站URL/SendMessage/你好
另外建議你使用REST WCF自帶的一個幫助頁面,里面會給出更精確的調(diào)用示例。
請問有哪位大神可以幫我解釋一下這段代碼? .net/wcf
private string InnerSave(ref T_OA_SIGNETAPPLY entity, ListT_OA_SIGNETAPPDETAIL listDetails, ListT_OA_SIGNETAPPLINK listLinks, ref bool bResult, bool isSubmit)
// 這句是函數(shù)定義,ref表示的是這個參數(shù)是引用,如果在這個函數(shù)中對entity進行了修改,則entity這個變量本身就會被修改。后續(xù)的參數(shù)分別是ListT_OA_SIGNETAPPLINK類型,bool類型。
{
string strReturn = string.Empty;
T_OA_SIGNETAPPLY app = signetclient.GetSignetAppByID(entity.SIGNETAPPID);
// 這句代碼沒啥說的吧
求 VB.Net的TCP/IP通訊實例,最好包括客戶端請求連接與處理來自服務(wù)器的響應(yīng)相關(guān)代碼
服務(wù)器和客戶端都有,但是都是很基本的代碼,可以作為參考學(xué)習(xí)。。。
怎么判斷wcf服務(wù)是否存在
大多數(shù),如果不是所有的異??梢钥闯?,在WCF軌跡(配置軌跡)和微量最好使用服務(wù)軌跡查看器查看。 這不是你應(yīng)該已經(jīng)跑了一整天在生產(chǎn),但它有助于排除故障反正。 此外,請注意,oneways可能不會作為一個真正運行的逗射后不理地視SessionMode如果您有您的服務(wù)配置為SessionMode.Allowed甚至SessionMode.Required,該單向操作將運行 CodeGo.net,如果它不是單向的所有(這個可以觀察oneways超過坦率地說,不過,我不知道這是否改變了異常,你可以得到的類型,或者當(dāng)你讓他們,但是,在任何情況下,你應(yīng)該得到一個異常,如果該請求不能送的。AFAIK,該單向逗結(jié)束地時,enqued在服務(wù)器端,所以有地方(WCF相關(guān)的)異常在那之前(序列化/反序列化記)。 那么,這樣的相關(guān)異常見過最好的(甚至是IErrorHandler接口并沒有讓他們都因時,它被稱為在請求/響應(yīng)流量的事實)使用軌跡/ traceviewer。
2. 如何處理故障的官方是在這里: 處理異常和 故障 了解狀態(tài) 變化 與主網(wǎng)頁是在信道模型概述 有一個很好的狀態(tài)示出的事情是如何發(fā)生的:
3. 異常情況將發(fā)生故障的代理。你不能AFAIK做很多有關(guān):不異常;-P 我有點驚訝的是單向還是個問題,但對于吞咽屬升,有學(xué)分: 是你扔的故障看或異??此苤匾ǘ覒?yīng)該是逗錯誤地) 作為一個hacker,你可以啟用調(diào)試-但是請關(guān)閉此服務(wù)! 你在逗使用地的服務(wù)對象看我剛剛在博客上這個確切的主題...基本上,你的逗使用地可吞異常。 3個選項: 唐的逗使用地 子類的代理和重寫的Dispose() 把它包,按照該博客
4. 通常情況下,WCF服務(wù)承載在ServiceHost中,如果WCF的服務(wù)失敗,那么唯一的選擇就是killWCF服務(wù),并開始一個新的。 在ServiceHost有一個事件觸發(fā)器逗斷塊地的時候,WCF服務(wù)失敗時被激活:
ServiceHost host = new ServiceHost(new Service.MyService());
host.Faulted += new EventHandler(host_faulted);
host.Open();
這是可能得到異常的故障,但它需要多一點的工作:
public class ErrorHandler : IErrorHandler
{
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
}
public bool HandleError(Exception error)
{
Console.WriteLine("exception");
return false;
}
}
public class ErrorServiceBehavior : IServiceBehavior
{
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, CollectionServiceEndpoint endpoints, BindingParameterCollection bindingParameters)
{
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
ErrorHandler handler = new ErrorHandler();
foreach (ChannelDispatcher dispatcher in serviceHostBase.ChannelDispatchers)
{
dispatcher.ErrorHandlers.Add(handler);
}
}
}
ServiceHost host = new ServiceHost(new Service.MyService());
host.Faulted += new EventHandler(host_faulted);
host.Description.Behaviors.Add(new ErrorServiceBehavior());
host.Open();
積分
5. 大約2)... 訣竅在于,你逗使用地,應(yīng)始終在拋出異常的代理調(diào)用Abort()。文章WCF疑難雜癥解釋這一切。 服務(wù)類的文章,它包裝服務(wù)調(diào)用者的啟發(fā)。這是從我的項目的示例代碼:
ServiceHelperCodeListServiceClient, CodeListService.CodeListService.Use(
proxy = seasonCodeBindingSource.DataSource = proxy.GetSeasonCodes(brandID);
);
這是ServiceHelper的代碼,從文章略加修改。到目前為止,它已經(jīng)真的很好。
using System;
using System.ServiceModel;
namespace Sportina.EnterpriseSystem.Client.Framework.Helpers
{
public delegate void UseServiceDelegateTServiceProxy(TServiceProxy proxy);
public static class ServiceHelperTServiceClient, TServiceInterface where TServiceClient : ClientBaseTServiceInterface, new() where TServiceInterface : class
{
public static void Use(UseServiceDelegateTServiceClient codeBlock)
{
TServiceClient proxy = null;
bool success = false;
try
{
proxy = new TServiceClient();
codeBlock(proxy);
proxy.Close();
success = true;
}
catch (Exception ex)
{
Common.Logger.Log.Fatal("Service error: " + ex);
throw;
}
finally
{
if (!success proxy != null)
proxy.Abort();
}
}
}
}
6. 我有一個問題,即通道仍然處于故障狀態(tài)的異常之后。這將服務(wù)于任何后續(xù)連接被渲染。 從故障狀態(tài)恢復(fù)服務(wù)的修復(fù)是處理通道發(fā)生故障的事件:
channelFactory = new ChannelFactoryIService(endpoint);
channelFactory.Faulted += OnChannelFaulted;
var channel = channelFactory.CreateChannel();
然后定義OnChannelFaulted:
void OnChannelFaulted(object sender, EventArgs e)
{
channelFactory.Abort();
}
本文名稱:vb.netwcf示例的簡單介紹
分享地址:http://www.dlmjj.cn/article/doipcjg.html