我收到错误400,错误请求。
我有一组我试图写的页面。 (仅列出相关)
我正在寻找允许我的前端与Webcalls页面进行通信,如下所示:
$.ajax({
url: "webservices/WebCalls.svc/DoWork",
success: function(){
console.log(arguments);
}
});
但似乎没有效果。
我正在考虑创建这样的文件:
WebCalls.svc:
public class WebCalls: IWebCalls
{
public string DoWork()
{
return "{\"hello\":\"Chop Wood, Carry Water.\"}";
}
}
和IWebCalls.cs:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public interface IWebCalls
{
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "DoWork")]
string DoWork();
}
在我的webConfig中,我认为我正确设置了它:
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp helpEnabled="true" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" httpGetUrl=""/>
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="ServiceBehavior" name="MyProj.WebCalls">
<endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
bindingConfiguration="LargeWeb" name="LargeWeb" contract="MyProj.webservices.IWebCalls" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="LargeWeb"
maxBufferPoolSize="15000000"
maxReceivedMessageSize="15000000"
maxBufferSize="15000000">
<readerQuotas
maxArrayLength="15000000"
maxBytesPerRead="15000000"
maxDepth="32"
maxNameTableCharCount="15000000"
maxStringContentLength="15000000"
/>
</binding>
</webHttpBinding>
</bindings>
当我运行它时,它只是告诉我它已经创建了一个服务,但当我尝试调用时: DoWork 它会出现400错误。
我的方法有问题吗?我只是想建立一组页面,以便我可以查询数据。最初,我打算为我想创建的EACH函数创建一个GenericHander.asxh,但我认为这是太多的空间。我知道这样的事情是一种选择,但似乎它不起作用。
答案 0 :(得分:1)
您可能修饰了错误的界面ITestService
。而是检查IWebCalls
的声明。
编辑:嗯..我看到你更新了问题...
我认为您的服务名称可能应该是name="MyProj.webservices.WebCalls"
- 但假设这也是一个拼写错误,我看到的唯一问题是mex
端点不应该存在。 mex
端点不适用于基于REST的服务。