我有这个使用 MVVM 的 Silverlight Prism 应用程序。该模型调用 WCF 服务并返回数据列表。
ViewModel 绑定到 View,所以 ViewModel 应该有一个 List 属性。
我应该在 MVVM 中保留 WCF 服务返回的数据吗?
List 属性是否应该使用其 getter 调用模型?其中模型具有返回存储在模型中的数据的 ReturnListOfData() 方法。
或者 ViewModel 是否在 Model 调用服务器完成后存储数据?
我正在编写一个简单的 wcf 服务,将请求提交给某个网关进行处理。
正在通过执行以下操作来执行请求:
我正在编写一个 WCF 服务,该服务将请求提交给一些期望得到如下内容的服务:
gatewayService.SendRequest(request);
Run Code Online (Sandbox Code Playgroud)
其中 gatewayService 是 WCF 代理,请求是我自己的对象,它继承了 WCF Message 对象。
请求对象有几个属性,如:
[MessageBodyMember]
public ReportCommandLineRequest ReportRequest { get; set; }
[MessageBodyMember]
public ImportCommandLineRequest ImportRequest { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的问题是当这个请求对象被序列化时。在服务器端,我收到了一条看起来像这样的大块肥皂消息:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://tempuri.org/IReportClient/RunReport/IGatewayAdapter/SendRequest</a:Action>
<VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo4jiWNjcsdxHiUhlOA63xYEAAAAApgt+BuVvcEixP33+yOQTgRHZQSyr4L5ImMHVeEWLFBMACQAA</VsDebuggerCausalityData>
<a:To s:mustUnderstand="1">net.tems://localhost:7222/queue/LB.FIA.Gateway.STAGE.InputQueue</a:To>
</s:Header>
<s:Body>
<SendRequest xmlns="http://tempuri.org/IReportClient/RunReport">
<request xmlns:b="http://schemas.datacontract.org/2004/07....
Run Code Online (Sandbox Code Playgroud)
另一方面,我希望在服务器端只得到上面列出的属性的序列化(ReportRequest/ImportRequest),并希望得到一个序列化的 xml 看起来像这样(没有里面的所有垃圾:
<ReportCommandLineRequest>
<outputFileName>gatewayReportOutput-01082010-150043.pdf</outputFileName>
<CommandLineArg
name="format"
..
</ReportCommandLineRequest>
Run Code Online (Sandbox Code Playgroud)
谁能帮我弄清楚我该怎么做?
谢谢。
我创建了一个 WCF 服务来流式传输文件(下载)。服务代码如下
public Stream GetCoverScan(List<string> productIDs)
{
FileStream stream = new FileStream("", FileMode.Open, FileAccess.Read);
return stream;
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何在客户端使用它。我已经在客户端上创建了一个代理,我可以通过创建服务对象来查看该方法,但是我如何读取流。
请指教
配置
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="StreamedHttp" transferMode="StreamedResponse"
maxReceivedMessageSize="67108864">
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="Streaming.Service1"
behaviorConfiguration="Streaming.Service1Behavior">
<endpoint address="" bindingConfiguration="StreamedHttp"
binding="basicHttpBinding" contract="Streaming.IService1">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Streaming.Service1Behavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
合同
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(string name);
[OperationContract]
System.IO.Stream GetCoverScan(List<string> productIDs);
}
Run Code Online (Sandbox Code Playgroud)
绑定
</bindings>
Run Code Online (Sandbox Code Playgroud) 我已经浏览了一些主题,并且能够使用以下代码在 vb6 中调用服务:
Dim sUrl As String
Dim response As String
Dim xmlHttp
Private Sub Form_Load()
sUrl = "http://abc.com/services/abc.svc"
Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP")
xmlHttp.Open "POST", sUrl, False
xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlHttp.send
Dim response As String
response = xmlHttp.responseText
Set xmlHttp = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
问题是我如何在 vb6 中调用 WCF 服务并将参数传递给它的方法并获得结果?
我的代码是:
public class MainActivity extends Activity implements OnClickListener {
Button b;
private static String NAMESPACE = "http://tempuri.org/";
private static String METHOD_NAME = "GetList";
private static String SOAP_ACTION = "http://tempuri.org/IWCFMasterRole/GetList";
private static String URL = "http://172.16.0.1:55355/WCFMasterRole.svc";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
b.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.button1) {
new MyClass().execute("");
}
}
class MyClass extends AsyncTask<String, Void, SoapObject> {
SoapObject result;
@Override
protected SoapObject doInBackground(String... params) {
try …
Run Code Online (Sandbox Code Playgroud) 我正在尝试检查从 SQL 返回的字段是否为空,但我一直在 isDBNull 上收到“无效的初始化程序成员声明符”
这是我的代码,可能是什么原因造成的?
while (dr.Read())
{
staff.Add(new Staff()
{
id = dr.GetInt32(dr.GetOrdinal("id")),
dr.IsDBNull(dr.GetOrdinal("NAME")) ? null : dr.GetString(dr.GetOrdinal("NAME")),
PARENT = dr.GetString(dr.GetOrdinal("PARENT")),
VALUE = dr.GetString(dr.GetOrdinal("VALUE")),
VALUETYPE = dr.GetString(dr.GetOrdinal("VALUETYPE"))
});
}
Run Code Online (Sandbox Code Playgroud) 我正在做一个学校项目,我们正在预订电影。该程序的标准之一是在列表中显示数据库中的所有电影。
我知道这可能是一个非常简单的问题,但我需要一个指向正确方向的指针。
如何制作包含电影所有数据的电影对象 ( movieID
, movieName
, movieLength
, movieDesc
)
如何使用此数据填充列表?
我们正在使用 C# 中的 WCF 在基于客户端/服务器的体系结构中编写程序
如果您需要进一步的阐述或细节,请告诉我。
提前致谢。这是我在数据库中创建电影的代码,我不确定如何从同一数据库创建电影对象,以在我的代码中使用。
SqlConnection sc = new SqlConnection();
sc.ConnectionString = ("Data Source=balder.ucn.dk;Initial Catalog=dmaa0213_6;********");
SqlCommand com = new SqlCommand();
sc.Open();
com.Connection = sc;
com.CommandText = ("INSERT into movies (movieName, movieLength, movieDescription) VALUES ('" + movieName + "','" + movieLength + "','" + movieDesc + "');");
com.ExecuteNonQuery();
sc.Close();
Run Code Online (Sandbox Code Playgroud) 我正在使用Biztalk中的RESTful API。我需要针对以下端点进行POST:
http://mycompany.sb01.com/atwork/api/v5.0
我已经通过Postman通过以下测试了我的API网址(哪个有效):
http://mycompany.sb01.com/atwork/api/v5.0/UID?name=bob&id=028153
由于在POST中具有多个URL参数,因此在将它转换为BizTalk应用程序中的发送端口时遇到问题。当我在Biztalk管理控制台中具有以下绑定时,我得到一个System.ArgumentException,它告诉我'='是意外的令牌,而预期的令牌是';'。
<BtsHttpUrlMapping>
<Operation Name="ID Insert" Method="POST" Url= "/UID?name={name}&id={id}"/>
</BtsHttpUrlMapping>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过在此处查看msdn文档:https : //msdn.microsoft.com/zh-cn/library/jj572853.aspx
但它只能与1个URL参数一起使用,而不能与多个URL参数一起使用。如果我删除:
&id={id}
Run Code Online (Sandbox Code Playgroud)
从我的绑定来看,它没有任何例外。Biztalk如何处理多个URL参数?
以前,我有一个面向应用程序的框架4.5.1,并使用Web Reference添加了WCF服务。这可以完美运行,并且能够通过服务器成功进行身份验证。
旧代码:
ServicePointManager.Expect100Continue = false;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
IService orderService = new Service();
// private method to load certificate
var cert = LoadCertificate(@"....\00050._.1.p12", "pwd");
oIPGApiOrderService.ClientCertificates.Add(cert);
oIPGApiOrderService.Url = @"service_url";
NetworkCredential nc = new NetworkCredential("username", "pwd");
oIPGApiOrderService.Credentials = nc;
Run Code Online (Sandbox Code Playgroud)
现在,我要升级到.net core 2.0,并以.net standard 2.0为目标。我已经添加了该服务正在使用服务引用(连接的服务)。生成的代码已更改,其中使用了通道工厂等。
新代码:
ServicePointManager.Expect100Continue = false;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
System.ServiceModel.BasicHttpBinding result = new System.ServiceModel.BasicHttpBinding();
result.MaxBufferSize = int.MaxValue;
result.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max;
result.MaxReceivedMessageSize = int.MaxValue;
result.AllowCookies = true;
result.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.Transport;
IService client = new Service(result, new EndpointAddress("service_url"));
client.ClientCredentials.ClientCertificate.Certificate = new …
Run Code Online (Sandbox Code Playgroud) 我创建了一个C#项目,并使用它的dll作为另一个Winform应用程序中的引用,并调用dll项目中的函数.
我有一个要求,我必须从该dll调用winform的函数.有什么办法可以将函数注册到我的dll中吗?或者在某种情况下,我能从dll通知winform应用程序的任何其他方式?
我只是想从dll向winform应用程序发送一种通知.
我将使用WCF来包装dll项目.(任何帮助?)
想法/代码示例将非常有用.
wcf ×10
c# ×4
asp.net ×2
android ×1
architecture ×1
asp.net-core ×1
biztalk ×1
biztalk-2013 ×1
mvvm ×1
prism ×1
silverlight ×1
sql ×1
vb6 ×1
winforms ×1
xml ×1