WCF 和使用 WEBGET 在浏览器中测试服务
WCF and using WEBGET to test service in browser
您好,我是使用 WCF 的新手(半天前),我创建了一个可以通过本地主机查看的服务
http://localhost:[port]/Service1.svc? - 没有 404!
但是,在我想通过应用程序连接到此服务之前,我想看看该服务是否确实 return 是什么意思。 (只要确保数据库连接正常等)
我的 IService 上有这个(不幸的是它在 VB.Net 中,但我知道 C#..)
<OperationContract>
<WebGet(UriTemplate:="/method/{parameter}")>
Function getData(ByVal parameter As Integer) As String
这当然会触发(或应该)service1.svc class 中的方法 getData。
因此启动网络服务,我尝试这样做...
和
然而什么也没有。 (也不调试代码)
环顾四周,这可能与我尚未触及的网络配置文件有关。
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false 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>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
我缺少什么?
谢谢
您可以尝试设置一个明确的服务定义:
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false 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>
<services>
<service name="WebApplication1.Service1">
<endpoint address="" binding="webHttpBinding" contract="WebApplication1.IService" behaviorConfiguration="WebBehavior" />
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
然后签订合同:
Imports System.ServiceModel
Imports System.ServiceModel.Web
<ServiceContract()>
Public Interface IService
<OperationContract>
<WebGet(UriTemplate:="/method/{parameter}")>
Function getData(ByVal parameter As String) As String
End Interface
和一个实现:
Public Class Service1
Implements IService
Public Function getData(ByVal parameter As String) As String Implements IService.getData
Return "Foo bar"
End Function
End Class
现在导航到 /Service1.svc/method/123
将调用正确的方法。
您好,我是使用 WCF 的新手(半天前),我创建了一个可以通过本地主机查看的服务
http://localhost:[port]/Service1.svc? - 没有 404!
但是,在我想通过应用程序连接到此服务之前,我想看看该服务是否确实 return 是什么意思。 (只要确保数据库连接正常等)
我的 IService 上有这个(不幸的是它在 VB.Net 中,但我知道 C#..)
<OperationContract>
<WebGet(UriTemplate:="/method/{parameter}")>
Function getData(ByVal parameter As Integer) As String
这当然会触发(或应该)service1.svc class 中的方法 getData。
因此启动网络服务,我尝试这样做...
和
然而什么也没有。 (也不调试代码)
环顾四周,这可能与我尚未触及的网络配置文件有关。
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false 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>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
我缺少什么?
谢谢
您可以尝试设置一个明确的服务定义:
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false 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>
<services>
<service name="WebApplication1.Service1">
<endpoint address="" binding="webHttpBinding" contract="WebApplication1.IService" behaviorConfiguration="WebBehavior" />
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
然后签订合同:
Imports System.ServiceModel
Imports System.ServiceModel.Web
<ServiceContract()>
Public Interface IService
<OperationContract>
<WebGet(UriTemplate:="/method/{parameter}")>
Function getData(ByVal parameter As String) As String
End Interface
和一个实现:
Public Class Service1
Implements IService
Public Function getData(ByVal parameter As String) As String Implements IService.getData
Return "Foo bar"
End Function
End Class
现在导航到 /Service1.svc/method/123
将调用正确的方法。