为了预备这一点,我对服务器和网络的总体经验很少,所以如果我说的话不正确或者我遗漏了一些简单的话,我会道歉。
我正在尝试创建一个WCF服务应用程序,我可以从同一网络上的其他设备发出HTTP请求,并以JSON的形式接收响应。当我使用Visual Studio开发服务器来托管应用程序时,我能够向本地主机发出这些请求并获得响应。
请求:
http://localhost:15021/Service1.svc/getData/myValue
响应:
{"GetDataResult":"You entered: myValue"}
运营合同:
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "getData/{value}")]
string GetData(string value);
虽然这可以从我的机器上运行,如果我尝试了另一个,使用机器IP地址更改localhost,我将得不到任何响应。我开始研究这个,如果我想要这个功能,我似乎需要用IIS来托管它。我找到了很多关于使用IIS托管WCF服务的教程,例如。 http://www.codeproject.com/Articles/550796/A-Beginners-Tutorial-on-How-to-Host-a-WCF-Service
这些教程的问题是他们总是使用基于控制台的“客户端”来运行合同,而我需要使用HTTP请求。有一个简单的方法吗?
提前致谢。
编辑:
我相信我的web.config可能背后是我的问题,但不确定
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name ="MongoWCF.Service1" >
<endpoint address="../Service1.svc"
binding="webHttpBinding"
contract="MongoWCF.IService1"
behaviorConfiguration="webBehavior" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
答案 0 :(得分:-1)
您需要使用系统IP地址来使用WCF
服务。
您可以分享您的svc文件的链接,该链接看起来像http:// ip address here/Test/Service.svc
客户端可以使用它来生成代理并使用您的服务。