31470


【環境】  
開発環境はWindows10で、VisualStudio2017CommunityのWebFormsです。  
Windwos2012ServerにWCFサービスを配置しています。  
【問題点】  
接続を試みたところ、接続に失敗しました。Chromeの開発ツールで確認したところ、次のようなエラーが出ていました。本来の呼出先である、"SyouBu.svc/TopCate"から"Account/Login"にRedirectされているのが原因のようです。Account/Loginは今回は全く関係がなく、ソース等で思い当たる点はありません。  
どのような修正方法が考えられるでしょうか。  
なお、IPやドメインが異なる、環境が似ている別のWindows2012ServerにWCFサービスを配置したところ期待通りに動作したので、なおさらわからなくなっているところです。  
[![エラーメッセージ](https://i.stack.imgur.com/WYM58.jpg)](https://i.stack.imgur.com/WYM58.jpg)

【コード類】  
呼出元のAjaxは、以下の通りです。  
なお、URLが直接指定なのは、Cordovaを用いてモバイルアプリにすることを考えているためです。

[code]

            function SetselCate() {
                ////alert('Bu')
                var iData = {};
                iData.Cate = cate;
    
                $.ajax({
                        　　
                    url: 'http://**********.jp/SHOP/SyouBu.svc/SetselCate',
                    type: 'GET',
                    dataType: 'json',
                    contentType: "application/json; charset=utf-8",
    
                    data: iData,
                    success: function (response) {
                        var cateset = JSON.parse(response.d);
    
                        $.each(cateset, function () {
                            var setCateID = this.cateid;                 
                        });
                    },
    
                    error: function (xhr, status, err) {
                        console.log(xhr);
                        console.log(status);
                        console.log(err);
                        alert('通信失敗');
    
                    }
                });
            };    
    
[/code]

WCF部分は、以下の通りです。

[code]

    Imports System.ServiceModel
    Imports System.ServiceModel.Activation
    Imports System.ServiceModel.Web
    Imports System.Web.Script.Serialization
    <ServiceContract(Namespace:="")> <AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
        Public Class SyouBu
    
     <WebGet()>
    Public Function SetselCate(ByVal Cate As String) As String
    
        Dim syoubu As New List(Of Object)()
    
                syoubu.Add(New With {
                        Key .cateid = "返り値",
    
        Return (New JavaScriptSerializer().Serialize(syoubu))
    
    End Function
    
     <WebGet()>
    Public Function TopCate(ByVal Cate As String) As String
    
        Dim syoubu2 As New List(Of Object)()
    
                syoubu2.Add(New With {
                        Key .cateid = "返り値",
    
        Return (New JavaScriptSerializer().Serialize(syoubu2))
    
    End Function
    End Class
    
[/code]

また、Global.asax.vbは次のようにしており、クロスドメイン問題を回避していようとしています。

[code]

    Imports System.Web.Optimization
    Public Class Global_asax
    Inherits HttpApplication
    
    Sub Application_Start(sender As Object, e As EventArgs)
        ' Fires when the application is started
        RouteConfig.RegisterRoutes(RouteTable.Routes)
        BundleConfig.RegisterBundles(BundleTable.Bundles)
    End Sub
    
    Protected Sub Application_BeginRequest(sender As Object, e As EventArgs)
    
        HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
        HttpContext.Current.Response.Cache.SetNoStore()
    
        EnableCrossDmainAjaxCall()
    End Sub
    
    Private Sub EnableCrossDmainAjaxCall()
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*")
    
        If HttpContext.Current.Request.HttpMethod = "OPTIONS" Then
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST")
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept")
            HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000")
            HttpContext.Current.Response.[End]()
        End If
    End Sub
    End Class
    
[/code]


CC BY-SA 3.0
2016-12-17T06:43:02.113
31199
2016-12-27T14:18:41.427
2016-12-17T18:35:18.440
19941
19941
question
ajax asp.net wcf
AjaxからWCFを呼び出した時、Account/Loginへのリダイレクトが発生しているようでうまく接続できません。


改めて、Visual Studioでプロジェクトを新規作成するところからやってみました（WCF サービス アプリケーション）。  
するとAccount/Login 等は生成されず、意図しないところにRedirectされてしまうという問題は発生しなくなりました。


CC BY-SA 3.0
2016-12-27T09:15:30.767
31470
2016-12-27T09:15:30.767
19941
31199
answer