2014-10-16 90 views
0

我已经阅读了很多论坛中有关这些问题的答案,并且鉴于我是这个主题中的一个完整的新手,如果在我的问题中有任何问题,请道歉幼稚。从ASP.NET的jQuery AJAX调用中发布WCF服务

我有一个ASP.NET的Web应用程序,应调用WCF服务发送和返回[我的地方全部]字符串

我试图打电话给通过jQuery这种服务,现在我越来越行不通。即使WCF服务在我的本地运行,我也在我的jQuery中找到404-Not Found。

我的web.config文件:

<?xml version="1.0"?> 
<configuration> 
    <appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5"/> 
    </system.web> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors>   
    </behaviors>    
    <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> 

这是.svc文件

<%@ ServiceHost Language="VB" 
Debug="true" 
Service="TemmeTaskSchedulerService.TemmeTaskSchedulerClass " 
CodeBehind="TemmeTaskScheduler.svc.vb" %> 

接口

<ServiceContract()> 
Public Interface TemmeTaskSchedulerInterface 
    <OperationContract()>    
    Function lstSearchProjects(ByVal environment As String) As String 
End Interface 

实现文件

Public Class TemmeTaskSchedulerClass 
     Implements TemmeTaskSchedulerInterface 

     Public Sub New() 
     End Sub 

      Function lstSearchProjects(ByVal environment As String) As String Implements TemmeTaskSchedulerInterface.lstSearchProjects 
        Return ""success "+environment 
     End Function 
End class 

我的jQuery的电话如下:

$('#environment').change(function() { 
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        url:'http://localhost:60403/TemmeTaskScheduler.svc/lstSearchProjects', 
        data: '{'+'$("#environment").children("option").filter(":selected").text()' + '}',//'{"Username": "' + $("#txtName").val() + '"}', 
        dataType: 'text', 
        processData: false, 
        success: function (data) { 
         alert("success:"+data); 
        }, 
        error: function (xhr, ajaxOptions, thrownError) { alert(xhr.status); alert(thrownError); } 

       }) 
      }); 

更正和问题都非常感谢! :)

+0

你在哪里卡住了?你是否收到任何特定的错误信息?如果您将错误消息添加到您的问题中,这将非常有帮助。 – Zack 2014-10-16 19:07:37

+0

我从ASP.NET代码调用服务时收到了404。 – 2014-10-16 19:22:43

+0

当您使用网络浏览器浏览到“http:// localhost:60403/TemmeTaskScheduler.svc”时,您仍然会收到404吗? – Zack 2014-10-16 20:35:37

回答

0

试试这个在WCF的web.config文件

<behaviors> 
    <endpointBehaviors> 
    <behavior name="webScriptEnablingBehavior"> 
     <enableWebScript/> 
    </behavior> 
    </endpointBehaviors> 

    <serviceBehaviors> 
    <behavior name="MyServiceTypeBehaviors"> 
     <serviceMetadata httpGetEnabled="true"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

的信息...去这个链接 http://msdn.microsoft.com/en-us/library/vstudio/bb763177(v=vs.100).aspx

+0

,但它们似乎是GET协议jQuery我已经提到它作为POST。所以这个代码是相关的 为了我?我不确定...请为我确认一次... – 2014-10-16 21:16:50

+0

否.. ,这是针对wcf元数据。以上配置适用于所有http方法。如果您正在使用最新的Visual Studio,则可以选择创建启用AJAX的Wcf服务。你可以在web.config中找到唯一的区别“”。 – 2014-10-17 02:44:43