Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从Web服务调用重定向到网页_.net_Web Services_Redirect - Fatal编程技术网

.net 从Web服务调用重定向到网页

.net 从Web服务调用重定向到网页,.net,web-services,redirect,.net,Web Services,Redirect,我有一个.NETWeb服务,它接受一些xml数据 在web服务中,我希望操纵数据,然后调用向用户显示信息的网页。web服务应在跨页后返回 我做这件事一点运气都没有 我已尝试服务器传输(url,结束);这将生成异常,因为我的返回已被传输破坏: 客户端发现响应内容类型为“text/html”;字符集=utf-8',但应为“text/xml” 我还尝试了Context.Response.Redirect(url,end);这将生成302异常(对象已移动) 我看到了关于如何处理302错误的各种描述。但是

我有一个.NETWeb服务,它接受一些xml数据

在web服务中,我希望操纵数据,然后调用向用户显示信息的网页。web服务应在跨页后返回

我做这件事一点运气都没有

我已尝试服务器传输(url,结束);这将生成异常,因为我的返回已被传输破坏: 客户端发现响应内容类型为“text/html”;字符集=utf-8',但应为“text/xml”

我还尝试了Context.Response.Redirect(url,end);这将生成302异常(对象已移动)

我看到了关于如何处理302错误的各种描述。但是,我无法控制客户。在这种情况下,将从java应用程序调用我的服务,因此在进行Web服务调用之前,我无法包装客户端调用。我需要在asmx内部完成这项工作

// this is very basic but the general gist
[WebMethod]
public string MyRequest(string someXML)
{
    // process the xml, dump do database, invoke aspx page

    string url = "xxxx.aspx";
    bool end = false;

    Server.Transfer(url, end);
    //this.Context.Response.Redirect(url, end);

    return "<retcode>somecode</retcode>";
}
//这是一个非常基本的要点
[网络方法]
公共字符串MyRequest(字符串someXML)
{
//处理xml、转储do数据库、调用aspx页面
字符串url=“xxxx.aspx”;
bool end=false;
传输(url,结束);
//this.Context.Response.Redirect(url,end);
返回“somecode”;
}
我已经寻找过这种情况的例子,或者从服务中异步调用web页面并返回的方法。有人能给我指出这个模式或一个例子吗

谢谢


Mike

您不能这样做,因为客户端需要XML响应(web服务的整个要点)。您不能强制客户端执行与服务器端完全不同的操作(即打开一个全新的应用程序,作为浏览器)。
客户端应用程序将需要更改

编辑:

如果web服务返回一条显示给用户的消息,您可以返回类似“请转到[URL]查看结果”这样的消息,并希望用户按照您的指示操作。

不幸的是,如果您无法控制客户端应用程序,这是不可能的。从客户端应用程序端考虑

Web服务(我猜在本例中是SOAP)通过http作为一种便利,但实际上是数据调用,它们不是网页。因此,客户端应用程序没有义务遵守重定向到网站,这实际上是协议跳转。我猜大多数SOAP库都会遵循302重定向,前提是它们试图调用的数据服务已经移动,所以仍然希望在新URI上找到数据服务

假设客户端是某种应用程序(即,不是在浏览器中运行的javascript),它甚至可能无法呈现网页,因此必须启动浏览器

如果您不控制客户机,但控制协议/接口,则可以定义一个返回类型,期望客户机在其中启动浏览器,但这基本上只是要求客户机实现者直接执行您不能执行的操作