0

此示例归功于 Pranay Rana:http: //www.codeproject.com/Articles/223572/Calling-Cross-Domain-WCF-service-using-Jquery-Java

在此处失败并链接到实际 WCF 的问题:http: //jsfiddle.net/TyrHW/

标记:

<%@ ServiceHost Language="C#" Debug="true" Service="WCF1.Service1" CodeBehind="Service1.svc.cs" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"%>

C# WCF 服务

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;

namespace WCF1
{
        [DataContract]
        public class Customer
        {
            [DataMember]
            public string Name;

            [DataMember]
        public string Address;


        }


  [ServiceContract(Namespace = "JsonpAjaxService")]
  [AspNetCompatibilityRequirements(RequirementsMode =   AspNetCompatibilityRequirementsMode.Allowed)]

    public class Service1
    {
        [WebGet(ResponseFormat = WebMessageFormat.Json)]
        public Customer GetCustomer()
        {
            return new Customer() { Name = "Jacob Pines", Address = "999 S William St." };
        }
    }
    }

网络配置

<?xml version="1.0"?>
<configuration>

    <system.web>
        <compilation debug="true" targetFramework="4.0"  />

    </system.web>

    <system.serviceModel >
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
            <standardEndpoints>
                <webScriptEndpoint>
                        <standardEndpoint name="" crossDomainScriptAccessEnabled="true"/>
                </webScriptEndpoint>
            </standardEndpoints>


    </system.serviceModel>


    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>

    </system.webServer>

    <system.web>
        <customErrors mode="Off"/>
    </system.web>


</configuration>

我在本地得到与我的 godaddy .net 4.0 主机相同的结果。我检查了 asp.net 级别。goddady 的 IIS 安全设置为匿名。如果我在浏览器中输入服务的 url,我会收到一些明显的身份验证问题,我已经发送给 Godaddy。如果我在本地做同样的事情,我会得到看起来很健康的 Web 服务,尽管仍然从 jsFiddle 中得到未定义。

这对我来说都是新的......所以这是一项使命。谢谢。

4

1 回答 1

1

引用以下文章

这在 Cassini 中运行时一切正常,但是当您想在 IIS 中托管它时,您需要注意两件事。首先,您需要确保正确安装和注册 IIS 和 WCF。如果 IIS 似乎不想输出您的 SVC 文件(您可以通过尝试 http:////AjaxService.svc 来检查),请尝试从 %WINDIR%\Microsoft.NET 运行命令 ServiceModelReg.exe /i /x \Framework\v3.0\Windows 通信基础。运行此命令后重新启动 IIS。其次,如果您创建了一个默认的 ASP.NET 2.0 网站,您可能会遇到以下错误消息:

IIS specified authentication schemes 'IntegratedWindowsAuthentication, Anonymous', but the binding only supports specification of exactly one authentication scheme. Valid authentication schemes are Digest, Negotiate, NTLM, Basic, or Anonymous. Change the IIS settings so that only a single authentication scheme is used.

要解决此问题,请在 IIS 管理器中右键单击该网站并选择“属性”。然后单击“目录”选项卡,单击“匿名访问和身份验证控制”区域中的“编辑”按钮。您将看到选择了匿名访问和集成 Windows 身份验证。取消选择其中之一,然后重新启动 IIS。之后,应用程序应该可以顺利运行。

在您的情况下,将集成 Windows 身份验证替换为基本身份验证。

于 2013-01-27T17:23:05.143 回答