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

WCF - Calling WebGet Request From Another Service

我正在集成一个 Web 服务。服务在完成它的事情后要求一个 url 参数用于重定向。

我创建了一个 WebGet 请求,如下所示: myserviceUrl/redirect/someVal/someOtherVal 并将 url 作为参数提供给请求。

现在,当我在浏览器中输入 url(运行 从 VS 作为本地主机)时,我可以确认它正在按我的预期工作。但是,当从网络服务调用我作为参数提供的地址时,浏览器会显示一个页面,上面写着

Service - Method not allowed.

如果我点击地址栏并按回车键(url 似乎是正确的)它就可以工作。

这个问题的根源是什么,是域还是身份验证? 我该如何解决这个问题。是否有我可以更改的 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);
}

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

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

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

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