2014-07-17 19 views
5

Tôi có máy chủ signalr 2.0 sẽ phân phối nhiều miền .. Vì vậy, cần bật CORS trong máy chủ của tôi. Tôi sử dụng iis7.5 làm máy chủ web. tôi kích hoạt CORS trong Startup phương pháp dự án của tôi như sauTên miền chéo không hoạt động với signalr 2.0

public void Configuration(IAppBuilder app) 
     { 
     app.Map("/signalr", map => 
      { 
       // Setup the CORS middleware to run before SignalR. 
       // By default this will allow all origins. You can 
       // configure the set of origins and/or http verbs by 
       // providing a cors options with a different policy. 
       map.UseCors(CorsOptions.AllowAll); 
       var hubConfiguration = new HubConfiguration 
       { 
        // You can enable JSONP by uncommenting line below. 
        // JSONP requests are insecure but some older browsers (and some 
        // versions of IE) require JSONP to work cross domain 
        // EnableJSONP = true 
       }; 
       // Run the SignalR pipeline. We're not using MapSignalR 
       // since this branch already runs under the "/signalr" 
       // path. 
       map.RunSignalR(hubConfiguration); 
} 
} 

Mã này là sao chép và dán từ bài viết này http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client

Tôi tạo ra một dự án localhost và cố gắng kết nối với máy chủ signalr.

Nhưng tôi nhận được lỗi sau đây trong firefox

Cross-Origin Yêu cầu Bị chặn: The Origin Policy Same không cho phép đọc các tài nguyên từ xa tại http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622027746 này có thể được cố định bằng cách di chuyển các nguồn lực để cùng một tên miền hoặc cho phép CORS . thương lượng

và lỗi này trong chrome XMLHttpRequest không thể tải http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622032883. Không có tiêu đề 'Access-Control-Allow-Origin' xuất hiện trên tài nguyên được yêu cầu. Xuất xứ '(Khách hàng của tôi địa chỉ trang web) do đó không được phép truy cập

tôi Ngoài ra thêm các dòng sau vào web.config của tôi

<httpProtocol> 
     <customHeaders> 
     <clear /> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     </customHeaders> 
    </httpProtocol> 

Sự thay đổi này cũng là vô ích.

+0

Không chắc chắn nếu điều này sẽ giúp bạn nhưng trong ứng dụng góc sử dụng "*" không hoạt động, chúng tôi phải chỉ định miền chính xác. – epitka

+0

Tất cả những gì chúng tôi biết là các tiêu đề không được đặt chính xác. Bạn có thể thêm tiêu đề vào câu hỏi của mình không? –

+0

Tôi khuyên bạn nên sử dụng trình điều khiển để kiểm tra tiêu đề mà máy chủ của bạn thực sự đang gửi; mà không có điều đó, đó là tất cả các phỏng đoán –

Trả lời

5

Hãy thử removing WebDAV mô-đun trong cấu hình của bạn (giúp tôi một số thời gian trước đây):

<configuration>    
    <system.webServer>     
     <modules> 
      <remove name="WebDAVModule" /> 
... 
1

Trong sử dụng Application_Start của bạn dưới đây đang sử dụng phương pháp quá tải của MapHubs

var hubConfiguration = new HubConfiguration(); 
hubConfiguration.EnableCrossDomain = true; 
RouteTable.Routes.MapHubs(hubConfiguration); 
+6

EnableCrossDomain không có trong Signal 2. –

1

Cuối cùng vấn đề của tôi được giải quyết sau rất nhiều khó khăn. Dường như xung đột số cổng gây ra vấn đề này. Tôi dừng trang web khác trên máy chủ của mình và dừng bất kỳ dịch vụ chuyển phát nhanh nào khác và sau đó nó hoạt động tốt. Cảm ơn bạn đã chú ý đến câu hỏi của tôi.

3

Tôi đã trải nghiệm điều này ngay hôm nay và sau khi xem xét một chút, thấy rằng việc cài đặt gói Microsoft.Owin.Cors đã giải quyết được sự cố cho tôi.

Chỉ cần chạy lệnh sau trong Package Manager Console:

Install-Package Microsoft.Owin.Cors 

xây dựng, và tải lại trang.

Các vấn đề liên quan