0

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

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

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

服务 - 不允许的方法。

如果我单击地址栏并按 Enter 键(使用似乎正确的 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);

服务1.svc:

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

1 回答 1

1

从您的错误来看,您调用休息服务的方法似乎不合适。您的服务是 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);
于 2019-01-21T06:49:28.207 回答