当我创建一个新的WCF服务时,我可以创建一个像这样的新方法:
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "TryThis", ResponseFormat = WebMessageFormat.Json)]
string TryThis();
一个返回简单字符串的函数。
我可以将其与测试客户端WCF一起使用,并且可以正常工作。但是,当我想使用Chrome,邮递员或我的Android应用程序访问我的服务时,就不能。
我尝试使用这些网址:
http://localhost:54792/Service1.svc/TryThis
http://tempuri.org/IService1/TryThis
当我使用“ http://localhost:54792/Service1.svc”时,我有了主页,所以可以。但是我无法使用任何服务方式。
错误是400错误。但我没有任何消息指出此错误在哪里。我不知道这是我的IIS服务器的配置,如果这是我的服务。我完全被封锁了。
这是我的web.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.7.1" />
<httpRuntime targetFramework="4.7.1"/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
PS:我已经看过这篇文章:“ How Can I access WCF services using a Web Reference?”,但这对我没有帮助。
答案 0 :(得分:2)
似乎您在IIS中托管WCF服务,并且想要发布Restful风格的服务,可以参考以下代码。
服务器:IService.cs
namespace WcfService5
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet]
string GetData(int value);
}
}
Server:Service.svc.cs
namespace WcfService5
{
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
}
}
Web.config。
<system.serviceModel>
<services>
<service name="WcfService5.Service1">
<endpoint address="" binding="webHttpBinding" contract="WcfService5.IService1" behaviorConfiguration="MyRest"></endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="MyRest">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
请随时告诉我是否有什么可以帮忙的。