【发布时间】:2014-06-12 07:10:33
【问题描述】:
我正在开发一个场景,我必须在 xml 文件中插入数据。
以下是我的服务合同:
namespace WcfService1
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "PostData")]
string InsertData(Data data);
}
[DataContract]
public class Data
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Email { get; set; }
[DataMember]
public string Category { get; set; }
[DataMember]
public string Mobile { get; set; }
[DataMember]
public string Message { get; set; }
}
}
我的配置文件:
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1"/>
</system.web>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="b_WebHttpBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Buffered"
useDefaultWebProxy="true" crossDomainScriptAccessEnabled="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="ServiceBehaviour" name="WcfService1.Service1">
<endpoint address="WcfServiceAddress" behaviorConfiguration="web" binding="webHttpBinding"
bindingConfiguration="b_WebHttpBinding" contract="WcfService1.IService1" />
</service>
</services>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
我通过 jQuery 调用它:
$(document).ready(function () {
$('#BtnRegister').click(function () {
debugger;
var input =
{
data:
{
Name: document.getElementById("TxtUserName").value,
Email: document.getElementById("TxtUserEmail").value,
Category: document.getElementById("TxtUserCategory").value,
Mobile: document.getElementById("TxtUserMobile").value,
Message: document.getElementById("message").value,
}
};
$.ajax({
type: "POST",
url: "http://localhost:22727/Service1.svc/WcfServiceAddress/PostData",
contentType: "application/json",
data: JSON.stringify(input),
success: function (result) {
alert("data");
},
error: function (xhr, textStatus, errorThrown) { alert(textStatus + ':' + errorThrown); }
});
});
});
但是数据没有插入到文件中。
【问题讨论】:
-
您无法通过在浏览器中提供 url 来访问 POST 方法。使用像 Fiddler 这样的工具来做到这一点
-
你也可以使用REST Console(chrome插件)chrome.google.com/webstore/detail/rest-console/…