Archived

This forum has been archived. Please start a new discussion on GitHub.

Silverlight client: Failed to contact the Bridge

Hi, I have configured IIS to host the sample IceSL-0.1.0 (which also contains the bridge). I've added PUT to the list of verbs handled by .ashx and added all the configuration needed (MIME types etc).

However, clicking on a button returns:
OnClick method: Call failed with exception:
Ice.ProtocolException
   reason = "invalid http response code: Not Found"
at IceInternal.ProxyFactory.checkRetryAfterException(LocalException ex, REference ref
at Ice.ObjectPrxHelperBase.handleException__(LocalException ex, Int32 cnt)
at Ice.ObjectPrxHelperBase.handleExceptionWrapperRelaxed__(LocalExceptionWrapper e
at Demo.HelloPrxHelper.sayHello(Int32 delay, Dictionary '2 context__, Boolean explicitC
at Demo.HelloPrxHelper.sayHello(Int32 delay)
at helloC.Page.OnClick(Object sender, MouseEventArgs e)

My IIS error log only shows (when clicking a button):
- - - 404

I installed LiveHTTPHeaders to watch the request/response from Firefox, and it seems that Page.xaml.cs is sending a PUT request to the Bridge, but a response of 404 Not Found is returned

http://myIPaddress:1287/hellosl/IceBridge.ashx

PUT /hellosl/IceBridge.ashx HTTP/1.1
Host: myIPaddress:1287
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/binary
Referer: http://myIPaddress:1287/hellosl/TestPage.html
Content-Length: 5
IHTP

HTTP/1.x 404 Object Not Found
Server: Microsoft-IIS/5.1
Date: Tue, 15 Apr 2008 21:04:40 GMT
Connection: close
Content-Type: text/html
Content-Length: 102

Just wondering if anyone has encountered this problem? I am using Windows XP SP2. This works fine when i run from Visual studio (localhost).

Comments

  • matthew
    matthew NL, Canada
    The .ashx file is in the correct location, with the correct permissions?
  • Yes. I can browse directly from IE to

    http://myIPaddress:1287/hellosl/IceBridge.ashx

    and it would initialize the bridge, call ProcessRequest (which i can see from the EventViewer logs).

    When Running the app from http://myIPaddress:1287/hellosl/TestPage.html, nothing shows up in the Event logs.

    I have given read and execute permissions to the anonymous account that IIS authenticates as.
  • matthew
    matthew NL, Canada
    Using IE to browse to the address is a GET, whereas the SL application uses a PUT. Perhaps something is wrong with your PUT permission configuration?
  • how can I check this?
  • matthew
    matthew NL, Canada
    You could look at your web.config, or check the IIS configuration tool. It might be better to use a real http sniffing tool such as HTTP Sniffer. HTTP Protocol Sniffer., or HttpWatch: An HTTP Viewer and HTTP Sniffer for IE 6 & 7. That will show you what IE sends and SL sends and whatever differences there are between the two. What error code is IIS logging? You should be able to find a code like 404.X in the event log. What is X?
  • Do I have to add any entries in the web.config? Or u meant NTFS permissions of that file + put verbs to .ashx on IIS Default website ( i have set file permission and put verbs using IIS manager ).

    LiveHTTPHeaders is only for Firefox. The IIS log only returns - - - 404, nothing more:
  • matthew
    matthew NL, Canada
    Also, are you actually using SL with Firefox, because when we tested that it didn't work (as noted in the installation notes).
  • No, with IE.
  • matthew
    matthew NL, Canada
    I don't see in the access log above any access to IceBridge.ashx. For the 404 specific errors codes look at Description of Microsoft Internet Information Services (IIS) 5.0 and 6.0 status codes.

    With respect to web.config, you should not have to directly edit this file. However, from inspecting the content of the file you should be able to determine the configured set of permissible verbs on each of the resources.
  • xdm
    xdm La Coruña, Spain
    Hi

    I have installed the IceSl demo in IIS 5.1 again and here are details of what i do.

    This time i use one virtual directory for the bridge and other for the sl client. In this way we can reuse the Bridge setup for other demos hosted
    on the same machine.

    IIS 5.1 Setup

    ===================================
    Install the IceBridge
    ===================================

    1) Create a new directory where you want to place IceBridge files
    in this demo we are goint to use c:\icebridge as the physical location
    of the IceBridge in our computer.

    In this directory we need to put following files that are in IceSl distribution.
    Global.asax
    IceBridge.ashx
    Web.config


    2) Give "ASPNET" user full controll over this directory.

    3) Give "Internet Guess Account" the following rights for files Global.asax and IceBridge.ashx
    Modify, Read & Execute, Read, Write

    4) Give "Internet Guess Account" read access to the Web.config file

    5) Open IIS console from the administrative tools
    and create a new virtual directory called icebridge and points to
    c:\icebridge , check the Read, Run & Execute actions in the Wizard
    access permissions.

    6) Right click the icebridge virtual directory on IIS console.

    6.1 Virtual Directory.

    Read & Log Visits are enabled.

    Execute permisions: Script & Executables.

    Application protection: Medium (Pooled)

    Click on "Configuration.." and then double click .ashx
    in the open dialog enable this options
    ALL VERBS option and Script Engine, Check file exits.

    7) Give IceBridge.ashx & Global.asax Script Source Access.

    For this rigth click on the file inside the IIS console click properties.

    And Check that Script source access is checked in both files. Also check that annonymous
    access is checked in the File Security tab, that is only needed if you want your bridge be public accessible from clients.

    Once here the bridge is ready to work with any ice silverlight client hosted in the same server uri.

    ==========================================
    Setup the silverlight hello demo client
    ==========================================

    1) Open the hello demo solution and change the Ice.BridgeUri in Page.xaml.cs
    to point to: http://localhost:1287/icebridge/IceBridge.ashx and rebuild the solution.

    2) Create a new directory and copy this files from the hellosl WebApp to it.

    c:\hellosl
    c:\hellosl\Page.xaml
    c:\hellosl\TestPage.html
    c:\hellosl\TestPage.html.js
    c:\hellosl\Silverlight.js
    c:\hellosl\ClientBin\
    c:\hellosl\ClientBin\helloC.dll
    c:\hellosl\ClientBin\IceSl.dll

    3) From IIS console create a new Virtual directory that points to c:\hellosl
    and check Read & Browser permissions in the virtual directory wizard.

    4) The hellosl directory need the silverlight mime types, if you have allready setup it in the Default
    WebSite is not needed to add again for each site.

    Silverlight required this mime types.

    * application/x-msdownload .dll
    * application/xaml+xml .xaml

    Hope this help

    Jose