我是WCF的新手并试图让我的第一个服务运行.我很接近,但坚持这个问题.
在我的界面定义文件中,我有这个:
[ServiceContract(Namespace="http://mysite.com/wcfservices/2009/02")]
public interface IInventoryService
{
[OperationContract]
string GetInventoryName(int InventoryID);
}
Run Code Online (Sandbox Code Playgroud)
然后我有我的类文件(用于服务)继承它:
public class InventoryService : IInventoryService
{
// This method is exposed to the wcf service
public string GetInventoryName(int InventoryID)
{
return "White Paper";
}
Run Code Online (Sandbox Code Playgroud)
最后,在我的Host项目中,我有这个:
ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService));
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(),
"net.tcp://localhost:9000/GetInventory");
host.Open();
Run Code Online (Sandbox Code Playgroud)
一切都编译得很好,当主机去添加服务端点时,它会轰炸:"合同类型Inventory.InventoryService不归属于ServiceContractAttribute.为了定义有效合同,指定类型(合同接口或服务) class)必须归因于ServiceContractAttribute."
我知道我在这里缺少一些简单的东西.我将界面明确标记为服务合同,并在Host项目中引用该项目.
我很可能很快就会开展一些项目,我需要从文件中获取数据并以编程方式将数据输入到另一个第三方(不是我自己的)应用程序中.一个问题:我不知道如何做到这一点.我需要输入数据(如时间表上的时间,例如)任何人都可以引导我朝着正确的方向获得这项技能吗?
附加规格:我在深夜写了原帖,所以可能没有我应该的那么详细.这是一个例子:我的客户有一个ERP应用程序,他们用来收集工作人员执行工作时的时间戳,并在一天之内将项目推出门外.这个应用程序没有我可以用来提供数据的API.我听说有一个人能够以编程方式将数据实际推送到此应用程序的窗口和控件的屏幕上,这样数据就可以收集到Excel工作表中,然后有效地上传到这个应用程序中.一种反向屏幕刮擦.它不像API那样,但它有效.
我已经看到应用程序以类似的方式与其他应用程序进行交互.我能想到的一个很好的例子是截图实用程序SnagIt.您可以命令它在特定应用程序中屏幕捕获窗口,当您在该窗口周围移动鼠标时,指针下方的控件将以红色轮廓显示它将为您捕获的控件.我认为这是有趣的,可能只是一步之遥实际上能够键入文本到这样的控制.
感谢您的评论和答案到目前为止,我正在追求它们.
我有一个XML文档,我加载并尝试使用XPath进行搜索.此文件中的根节点<t:Transmission xmlns:t='urn:InboundShipment'>已正确关闭文件末尾</t:Transmission>.
我的问题是我不能在不使用后代轴的情况下走树.换句话说,我可以这样做:SelectSingleNode("//TransactionHeader[SHIPPERSTATE='CA']")并获得一个节点作为回报.但是我不能做相同的事情:SelectSingleNode("/Transmission/TransmissionBody/Transaction/TransactionHeader[SHIPPERSTATE='CA']")
如果我删除了t:我可以执行XPath搜索/Transmission并获取整个文件.随着t:在那里我只是得到空.或者,如果我尝试SelectSingleNode("t:Transmission")我的XPath语句出错.
我通常不需要查询根元素,所以我应该能够使用后代轴进行搜索.但XML看起来对我有用,所以我想知道如何解决这个问题.另外,我不想让客户删除"t:"只是因为我不知道如何处理它.
我在我的localhost上设置了SSRS,并使用BIDS创建了几个关于它们的报告.他们从部署SSRS的同一SQL Server访问数据,当我预览它们时,它们运行正常.然后我将它们部署到我的localhost SSRS并通过ReportManager Web界面访问它们,再次运行得很好.最后,我将它们部署到我的托管服务提供商的SSRS.同样的交易; 良好的数据连接性,它在ReportManager中看起来很棒.
我第一次通过任一系统上的ReportManager访问它们时,它需要我的用户名和密码,这在我的笔记本电脑上只是我的帐户登录和密码.对于我的托管服务提供商,这是我的帐户登录.
我的问题是当我尝试使用ASP.Net中的ReportViewer控件显示报表时.很多时候,当它试图渲染时,我得到一个"Bad Logon"或"401:Unauthorized"而不是我的报告.经过大量的阅读和思考,我认为问题是我需要登录不是SQL Server,而是登录我的报告所在的网站(Web服务?).现在,如果我根本不提供任何凭据,我可以在ReportViewer中获取我的本地报告(通常).但是,当我将报告部署到远程服务器时,这不再起作用.
经过一些研究后,我创建了一个实现IReportServerCredentials的类,并尝试使用它来传递用户名和密码,但这似乎不起作用.令我感到困惑的是,这些凭据是应该用于数据源还是用于Web服务.
如果有人能够告诉我如何让ReportViewer登录SSRS Web服务,我会非常感激.
asp.net authentication reportviewer reporting-services ssrs-2008
我在VS2008中组装了一个小型WCF服务,当我尝试使用HTTP协议运行主机时,它会因为没有相应的权限而遭到轰炸.在我的"Host.Open()"行中,我得到了这个异常:" HTTP无法注册URL http:// +:9001 /.您的进程没有对此命名空间的访问权限." 我似乎没有使用TCP的这个问题.我的o/s是Vista家庭高级版.
当我尝试在VS2008中调试它时,就会发生这种情况.经过大量的研究,我确定我可以让主机通过构建运行,转到"bin"文件夹,右键单击我的可执行文件,选择"以管理员身份运行".当我尝试使用WcfSvcHost.exe时发生了同样的事情.在我成功获得WcfSvcHost运行我的服务之前,我必须使用"以管理员身份运行"从菜单中打开VS2008命令提示符窗口.
有没有办法正确执行此操作而不是使用此变通方法?当我尝试在下周在Windows 2003 Server上部署时,我会遇到类似的问题吗?
在客户端的Web项目中,我们希望在整个站点的几个地方使用一种类似于"脚本"字体的字体.问题是这些通常不是系统字体,所以我们认为我们不能建议客户使用它们(客户喜欢这种外观); 它们可能会或可能不会很好地呈现给客户.
我们计划通过在本地使用字体创建各种短语的GIF,然后在网站页面上使用这些图像来继续前进.在我看来这是一个小小的kludgy(虽然它应该工作).还有更好的选择吗?
我将在接下来的几天内在测试服务器(MS Server 2003 O/S)上部署我的第一个WCF服务.此特定服务只会对SQL Server 2005运行一些查询(很可能在同一个框中),并将值返回给调用者.
我的问题是,与"经典"Web服务不同,使用WCF我现在可以选择部署/绑定.使用IIS托管此内容与将其设置为Windows服务是否有利有弊?一个比另一个快吗?对此的呼叫者(至少现在)将在内部网上.如果他们使用HTTP或TCP有区别吗?再次,是否存在速度差异?
希望我的问题有道理.过去几天我一直在关注WCF服务.如果需要,我很乐意澄清.
service ×3
wcf ×3
asp.net ×1
binding ×1
c# ×1
fonts ×1
http ×1
interface ×1
reportviewer ×1
servicehost ×1
sql-server ×1
ssrs-2008 ×1
winforms ×1
xml ×1
xpath ×1