微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调用WCF的Javascript提取-405不允许使用方法

如何解决调用WCF的Javascript提取-405不允许使用方法

学习javascript,我在本地计算机上运行了WCF服务。 IIS版本是10。

我正在尝试通过在浏览器控制台中使用Javascript FETCH来使用其中一种方法。承诺说“已实现”,但不允许使用该方法。在Google搜索显示它与CORS相关,因此我在网站标题添加一个标题以允许(Access-Control-Allow-Origin *)。我只能托管WCF(测试服务),因此无法编辑WCF的运营合同。

有什么办法可以查看数据?我可以使用WCF Test Client访问服务和方法

我还尝试使用一些跨源代理,它可以工作,但是如何查看WCF测试客户端输出的数据呢?

    async function test(){
     let s = await fetch('http://localhost/Main/Oriol.Host.BussServer/FinancialService.svc/GetAllTaxGroups',{
    method: 'GET',cache: 'no-cache',headers: {
      'Content-Type': 'application/json'   
    }})).then(a => a.json());
    console.log(s);
    }

编辑:

这是界面...

<service name="Oriol.Financial.Service.FinancialService" behaviorConfiguration="OriolServiceBehavior">
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="web" bindingConfiguration="restWebHttpBinding" contract="Oriol.Financial.Domain.ServiceInterfaces.IFinancialService" />
    <endpoint address="soap" binding="basicHttpBinding" bindingConfiguration="OriolBasicHttpBinding" contract="Oriol.Financial.Domain.ServiceInterfaces.IFinancialService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <endpoint binding="netTcpBinding" bindingConfiguration="PortSharingBinding" contract="Oriol.Financial.Domain.ServiceInterfaces.IFinancialService" />
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
  </service>

这是FinancialService.svc

<%@ ServiceHost Language="C#" Debug="true" Service="Oriol.Financial.Service.FinancialService" %>

错误

GET http://localhost/Main/Oriol.Host.BussServer/FinancialService.svc/GetAllTaxGroups 405 (Method Not Allowed)
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0

谢谢

编辑:

这是响应:

Response {type: "cors",url: "http://localhost/Main/Oriol.Host.BussServer/FinancialService.svc/GetAllTaxGroups",redirected: false,status: 405,ok: false,…}
body: (...)
bodyUsed: false
headers: Headers {}
ok: false
redirected: false
status: 405
statusText: "Method Not Allowed"
type: "cors"
url: "http://localhost/Main/Oriol.Host.BussServer/FinancialService.svc/GetAllTaxGroups"
__proto__: Response

解决方案:

添加配置文件中。

<customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
</customHeaders>

此外,在fiddler中进行的仔细检查显示,安全性仅允许POST。除了Method之外,我不需要任何其他标头参数。

现在一切正常,谢谢大家。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。