使用SOAP端点的错误请求WCF Webservice
问题描述:
我有一个WCF服务,需要多个端点(特别是json和SOAP)才能使其与Android和WP7设备兼容。使用SOAP端点的错误请求WCF Webservice
通过以下文件中的配置,我可以使用json端点通过Google Chrome访问该服务,但是如果尝试使用soap端点,则不能。使用Fiddler我得到404错误的地址http://liveandesor.web711.discountasp.net/wcf/SightingServiceRest.svc/json,虽然我得到了一个400错误错误的请求通过使用相同的地址,但在最后使用肥皂。
我试过使用this tutorial指示的配置,无济于事。
为什么我在这里做错了?我怎样才能解决这个问题?
任何帮助将不胜感激。谢谢你的时间! :d
下面是我使用的web.config文件:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<!--Deploy-->
<add name="LiveAndesWCF" connectionString="data source=tcp:sql2k802.discountasp.net;Initial Catalog=SQL2008_832326_liveandes;User ID=SQL2008_832326_liveandes_user;Password=******; MultipleActiveResultSets=true" providerName="System.Data.SqlClient"/>
<add name="LiveAndes" connectionString="data source=tcp:sql2k802.discountasp.net;Initial Catalog=SQL2008_832326_liveandes;User ID=SQL2008_832326_liveandes_user;Password=****; MultipleActiveResultSets=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="LiveAndes" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
</providers>
</membership>
</system.web>
<appSettings>
<!-- Deploy -->
<add key="mainPathDeployWCF" value="http://liveandesor.web711.discountasp.net/"/>
<add key="mainMachPathDeployWCF" value="e:\web\liveandesor\htdocs"/>
<add key="serverPath" value="e:\\web\\liveandesor\\htdocs"/>
<add key="imageBaseUrl" value="http://liveandesor.web711.discountasp.net/Content/UploadedImages/"/>
<!--<add key="mainMachPath" value="C:\Users\Rul\Documents\Universidad\2011'1\Taller de Especialidad\svn\Desarrollo\WEB\LiveAndesMVC\LiveAndesMVC"/>-->
</appSettings>
<system.serviceModel>
<protocolMapping>
<add scheme="http" binding="wsHttpBinding" />
</protocolMapping>
<services>
<service name="LiveAndesWCF.SightingService">
<endpoint address="soap"
bindingConfiguration="soapBinding"
binding="basicHttpBinding"
contract="LiveAndesWCF.ISightingService"/>
<endpoint address="json"
binding="webHttpBinding"
behaviorConfiguration="jsonBehavior"
contract="LiveAndesWCF.ISightingService"/>
</service>
<service name="LiveAndesWCF.UserService">
<endpoint address="soap"
bindingConfiguration="soapBinding"
binding="basicHttpBinding"
contract="LiveAndesWCF.IUserService"/>
<endpoint address="json"
binding="webHttpBinding"
behaviorConfiguration="jsonBehavior"
contract="LiveAndesWCF.IUserService"/>
</service>
<service name="LiveAndesWCF.UserServiceRest" behaviorConfiguration="MetadataBehavior">
<endpoint address="json"
behaviorConfiguration="WebBehavior"
binding="webHttpBinding"
contract="LiveAndesWCF.IUserServiceRest"/>
</service>
<service name="LiveAndesWCF.SightingServiceRest" behaviorConfiguration="MetadataBehavior">
<endpoint address="soap"
binding="basicHttpBinding"
bindingConfiguration="soapBinding"
contract="LiveAndesWCF.ISightingServiceRest"/>
<endpoint address="json"
behaviorConfiguration="WebBehavior"
binding="webHttpBinding"
contract="LiveAndesWCF.ISightingServiceRest"/>
</service>
<service name="LiveAndesWCF.TestService">
<endpoint address="soap"
binding="basicHttpBinding"
bindingConfiguration="soapBinding"
contract="LiveAndesWCF.ITestService"/>
<endpoint address="json"
binding="webHttpBinding"
behaviorConfiguration="jsonBehavior"
contract="LiveAndesWCF.ITestService"/>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="soapBinding" maxReceivedMessageSize="99999999" closeTimeout="00:02:00" openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:02:00">
<readerQuotas maxArrayLength="76384000" maxStringContentLength="2147483647"/>
<security mode="None"/>
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding maxReceivedMessageSize="99999999" closeTimeout="00:02:00" openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:02:00">
<readerQuotas maxArrayLength="76384000" maxStringContentLength="2147483647"/>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<enableWebScript/>
<!--<webHttp/>-->
</behavior>
<behavior name="WebBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<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="true"/>
</behavior>
<behavior name="MetadataBehavior">
<serviceMetadata httpGetEnabled="true" httpGetUrl="" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
答
您可以这样回答自己,然后将其标记为答案或纪念这一个。
“因为当我尝试使用slsvcutil工具来创建只用JSON端点引用,所有它说是‘没有终点的Silverlight 3’
兼容看到这个问题,知道我在说: Bad Request RestSharp Windows Phone 7
WP7可以使用JSON很容易,除非其已书面手机应用程序需要WCF –
感谢德里克的答案我怎么能这样做是为了使用JSON因为当我尝试使用!? slsvcutil工具只用json端点创建引用,它所说的只是“没有与Silverlight 3兼容的端点”。请参阅此问题以了解wha我在说:http://stackoverflow.com/questions/7650509/bad-request-restsharp-windows-phone-7 –