WCF-从另一个服务调用WebGet请求

时间:2019-01-18 09:35:34

标签: wcf operationcontract operationcontext weboperationcontext

有一个我正在集成的Web服务。服务在执行其操作后会请求url参数进行重定向。

我创建了一个WebGet请求,例如: myserviceUrl/redirect/someVal/someOtherVal 并将请求的网址作为参数。

现在,当我将URL输入浏览器(从VS作为本地主机运行)时,我可以确认它是否按预期工作。但是,当从Web服务调用我作为参数提供的地址时,浏览器将显示一个页面

  

服务-不允许使用方法。

如果我点击地址栏,然后按Enter键(使用正确的网址),那么它将起作用。

此问题的根源可能是域,身份验证吗? 我该如何解决。是否可以更改web.config设置或应该修改的一些请求属性?

我在网上搜索了很多,但似乎找不到有效的解决方案。

编辑:(基于oshvartz的评论)

这是我出于服务目的从服务初始化中调用的DLL。

public static void AppInitialize()
{
    ServicePostContent con = new ServicePostContent()
    {
        param1 = "val",
        param2 = "val2",
        responseUrl = "myserviceUrl/redirect/someVal/someOtherVal"
    }
    PostResponse res = Service.PostData(con);
}

IService1.cs:

[WebGet (UriTemplate = "redirect/{someVal}/{someOtherVal}")]
[OperationContract] void Test(string someVal, string someOtherVal);

Service1.svc:

public void Test(string someVal, string someOtherVal)
{
     System.Diagnostics.Debug.WriteLine(someVal + " / " + someOtherVal);
}

1 个答案:

答案 0 :(得分:0)

从您的错误看来,您调用休息服务的方法似乎不合适。 您的服务是WebGet,并且从代码ServicePostContent看来,您正在使用post方法来调用其余服务。

您的ServicePostContent是否使用get方法调用其余服务?

或者您可以将Webget更改为WebInvoke并将Method属性设置为POST

 [WebInvoke(UriTemplate = "redirect/{someVal}/{someOtherVal}", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
    [OperationContract] void Test(string someVal, string someOtherVal);