2013-08-01 62 views
0

突然我收到一个错误'Method not allowed。'。当从一个HTML表单调用WCF REST POST服务时(如前所述,它在开发,UAT,生产环境中工作较早,但现在失败)。WCF REST POST服务 - 当从HTML调用时不允许使用方法

什么可能导致此问题?以及可能的修复方法是什么?

<form action="http://localhost:8750/MyService/MyEmailService/RecordResponse" method="post" runat="server"> 
    <div align="left"> 
     <input type="hidden" name="userid" value="abc"> 
     <input type="hidden" name="itemid" value="625"> 
     <select name="response"> 
      <option value="Approved">Approve</option> 
      <option value="Rejected">Reject</option> 
     </select> 
     <textarea cols="40" rows="5" name="comment">Add comments here</textarea> 
     <input type="Submit" value="Submit"> 
    </div> 
</form> 

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
public class MyEmailService: IMyEmailService, ISessionAwareService 
{ 
    [OperationContract] 
    [WebInvoke(UriTemplate = "/RecordResponse", Method = "POST")] 
    public void RecordResponse(Stream stream) 
    { 
     // My business logic 
    } 
} 

的配置如下:

<endpointBehaviors> 
    <behavior name="webby"> 
     <webHttp helpEnabled="true"/> 
    </behavior> 

    <service name="CTRL.Server.CommandHandlerService.EmailHandlerService"> 
    <endpoint address="http://localhost:8750/MyService/MyEmailService" 
       binding="webHttpBinding" 
       contract="MyService.ServiceContracts.IEmailService" 
       behaviorConfiguration="webby"/> 

    <webHttpBinding> 
    <binding name="secure"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Basic" /> 
     </security> 
    </binding> 
    </webHttpBinding> 

回答

0

好吧,这里是一个背景下,我们生成电子邮件程序与HTML表单,其行动呼吁HTML表单提交的WCF REST服务

电子邮件客户端是用户用来阅读电子邮件的前景。

有一些基础设施升级和提交HTML表单不知何故POST请求WCF没有得到正确生成。

要解决此问题,我们将WCF服务从POST修改为GET,编写了一个Javascript方法来获取表单数据,并通过包含WCF REST服务URI中的HTML表单数据来调用WCF服务。

相关问题