外部ファイルで以下の JavaScript を使用して WCF を使用しようとすると、readyState は 1 から 4 になります。ResponsText は常に空です。
同じコードを使用して WCF を使用しようとするたびに、今回はプロジェクト自体で、想定どおりに動作します。
私は何を間違っていますか?前もって感謝します。
私はインターフェースを持っています
namespace CeviService
{
[ServiceContract(Namespace = "CeviService")]
public interface ICeviSpotter
{
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
String EchoWithPost(string n1, string n2);
}
}
実装で
namespace CeviService
{
public class CeviSpotter : ICeviSpotter
{
public String EchoWithPost(String n1, String n2)
{
return n1;
}
}}
次の web.config を使用して
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="AjaxBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
<service name="CeviService.CeviSpotter" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex"/>
<endpoint address="ajaxEndpoint" behaviorConfiguration="AjaxBehavior" binding="webHttpBinding" contract="CeviService.ICeviSpotter"/>
</service>
</services>
</system.serviceModel>
<system.web>
<compilation debug="true"/></system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
これは、次の JavaScript を使用して呼び出されます。
function makeCall(operation) {
// Create HTTP request
var xmlHttp;
try {
xmlHttp = new XMLHttpRequest();
} catch (e) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("This sample only works in browsers with AJAX support");
return false;
}
}
}
// Create result handler
xmlHttp.onreadystatechange = function () {
alert(xmlHttp.readyState);
// alert(xmlHttp.responseText);
}
// Build the operation URL
var url = "http://localhost:49456/CeviSpotter.svc/ajaxendpoint/EchoWithPost";
//url = url + operation;
// Build the body of the JSON message
var val1 = document.getElementById("num1").value;
var val2 = document.getElementById("num2").value;
var body = '{"n1":';
body = body + val1 + ',"n2":';
body = body + val2 + '}';
// Send the HTTP request
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/json");
xmlHttp.send(body);
}
ホストは次のように構成されます。
<%@ServiceHost
language="C#"
Debug="true"
Service="CeviService.CeviSpotter"
%>