我如何能调用一个方法,是在另一个网站在c#
本文关键字:方法 另一个 网站 一个 何能 调用 | 更新日期: 2023-09-27 18:05:40
我正在尝试调用另一个网站中的方法。
的例子:
WebsiteMVC (A) ->调用-> WebsiteMVC (B)中的方法
网站(A)必须传递一个字符串参数,网站(B)必须返回一个字节参数[]
另一个例子:
Website(A): www.xyz.com——调用方法并传递一个字符串——>Website(B): www.abc.com
网站(B): www.abc.com——返回一个Byte [] (a)>网站:www.xyz.com
我使用c#, MVC Razor.
我怎样才能使它工作?
首先,如果你能多解释一下为什么你想在另一个网站中调用一个方法,那就更好了。是因为你为其他网站和应用程序提供服务吗?
你有两个完全独立的MVC项目/站点,所以你不能直接从网站a调用方法到网站b。
尽管您可以使用MVC从a调用Web页面到B,并使用HTTP调用返回您想要的数组,并从站点B获得MVC控制器以返回您的数据,但我不推荐它,因为有更好的方法来使用ASP。. NET Web Api。
现在,对于这些情况有很多解决方案:
- ASP。.NET Web Api:这是一个。NET库,您可以在其中使用HTTP协议创建Rest Api。(我建议尝试一下,因为它易于设置和使用,而且,在开放的web中,我认为大多数api都使用http和json上的Rest api)。本项目将在下一个版本中与MVC 6集成。
- WCF:您可以使用它来创建SOAP和其他类型的服务。
- 套接字:这是另一个选项,不能满足你的需求,因为我相信你应该有一个很好的理由这样做。
- web服务的其他框架和库
不是这样的。两个网站是不同的应用程序,它们不能调用彼此的方法。这不是网站应该做的。
如果你想让你的应用程序通信,你应该使用其他的解决方案,比如web服务。您可以设置公开SOAP协议的WCF服务(例如),这将使远程方法调用成为可能。
我使用Http request with Post: Http request with Post
我是这样做的:
网站:
//request for method url in WEBSITE B
var request = (HttpWebRequest)WebRequest.Create("http://someDomain/controllerName/methodName");
var postData = "param1=" + _someString;
postData += "¶m2=" + _anotherString;
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
网站B:
//Here I get the parameters:
string _param1 = Request.Unvalidated["param1"];
string _param2 = Request["param2"];