我无法使用 post 方法调用休息服务并不断收到未找到端点的错误。代码如下:
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(
Method = "POST",
UriTemplate = "GetData",
BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json
)]
string GetData(string value);
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service1 : IService1
{
public string GetData(string value)
{
return value;
}
}
web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime maxUrlLength="1048576" relaxedUrlToFileSystemMapping="true" />
</system.web>
<system.serviceModel>
<protocolMapping>
<add scheme="http" binding="webHttpBinding" />
</protocolMapping>
<services>
<service name="RestPost.Service1" behaviorConfiguration="default">
<endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" contract="RestPost.IService1" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="web" >
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="default">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<!-- default binding configration used for all REST services -->
<webHttpBinding>
<!-- max allowed message size incresed to 500 000 Bytes -->
<binding maxBufferSize="95000000" maxReceivedMessageSize="95000000" />
</webHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<security>
<requestFiltering>
<requestLimits maxUrl="40960000" maxQueryString="20480000" maxAllowedContentLength="20480000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
这就是我在浏览器中调用 url 的方式
http://localhost:57395/Service1.svc/getdata/large base64encoded string here
这就是我在提琴手中的称呼
我现在正试图在 Casini 下运行它。最终它将部署在 IIS 7.5 上。
如果您想知道为什么我要传递一个大的 base64 编码字符串,我这样做是因为我需要以 JSON 格式发布请求。现在由于 JSON 具有 IIS 立即拒绝的特殊字符,我尝试使用 URLencode。问题是你不能超过 1000 个字符左右。长度是有限的。Base64 编码和使用 post 是唯一的方法,这就是我使用此代码的原因。
此 Rest 服务的最初目标是能够为基于 javascript 的客户端提供服务,该客户端将向该服务发送 JSON 帖子并获得 JSON 响应作为回报。没有 xml 字符串填充的纯 JSON 响应。
需要帮助才能使该职位到其余服务部门工作。